2015-02-19 4 views
0

У меня возникла проблема с прошлой недели. Моим требованием я должен создать собственный класс NSObject, в котором я должен написать весь способ навигации для всех кнопок Действие Click. И когда я нажимаю кнопку, действие кнопки будет извлекать метод навигации из этого настраиваемого класса NSObject в соответствии с кликом &. Но это не работает. Что я реализую, делюсь мой код ниже:Как перейти к ViewController из класса NSObject в iOS?

Это мой Method_Action_class.h Класс

#import <Foundation/Foundation.h> 
    @interface Method_Action_class : NSObject 
    -(void)login_method_called; 
    @end 

Это мой Method_Action_class.m Класс

#import "Method_Action_class.h" 
    #import "Home_ViewController.h" 

    @implementation Method_Action_class 

    -(void)login_method_called 
    { 
     UIWindow *window=[UIApplication sharedApplication].keyWindow; 
     Home_ViewController *home = [[Home_ViewController alloc] initWithNibName:@"Home_ViewController" bundle:nil]; 
     [window.rootViewController.navigationController pushViewController:home animated:YES]; 

    } 
    @end 

Когда я называю этот метод на кнопки мыши:

#import "Method_Action_class.h" 

    Method_Action_class *demo = [[Method_Action_class alloc] init]; 
    [demo login_method_called]; 

Примечание: Method_Action_class является моим NSObject Тип класса

Здесь код работает успешно без предупреждения/Ошибка, но не переходите к другому классу.

Пожалуйста, помогите мне.

+0

Эй, чувак, я тоже сталкиваюсь с этим типом проблемы. Но я выясню решение. Я поделюсь своим кодом, пожалуйста, проверьте :) –

+0

Да Пожалуйста. Спасибо за ваш ответ –

ответ

2

В вашей кнопки мыши действия Вы должны отправить UINavigationController & текущий ViewController. Потому что класс NSObject не нашел этого контроллера.

В вашей Кнопка Действие поместить этот код:

[demo login_method_called:self.navigationController withCurrentViewController:self]; 

В вашем NSObject .h класса ставят этот код:

#import <Foundation/Foundation.h> 
#import "Home_ViewController.h" 

@interface Method_Action_class : NSObject 

- (void)login_method_called:(UINavigationController*)navigation withCurrentViewController:(UIViewController*) controller; 
@end 

В вашем NSObject классе .m поставить этот код:

#import "Method_Action_class.h" 

@implementation Method_Action_class 

-(void)login_method_called:(UINavigationController*)navigation withCurrentViewController:(UIViewController*) controller 
{ 
    Home_ViewController *home = [[Home_ViewController alloc] initWithNibName:@"Home_ViewController" bundle:nil]; 
    [navigation pushViewController:home animated:YES]; 
} 
@end 

И постройте свой код, он успешно перемещается. :)

2

Пожалуйста, используйте NSNotificationCenter и использовать PushView из этого controller.Or и может использовать пользовательский Delegate.For это и может относиться

[1]: https://stackoverflow.com/questions/2191594/send-and-receive-messages-through-nsnotificationcenter-in-objective-c

+0

Спасибо за ваш ответ –

+0

Хорошо, я попробую и вернусь к u. – ashForIos

Смежные вопросы