如何从iOS中的NSObject类导航到ViewController?

时间:2015-02-19 07:18:02

标签: ios uinavigationcontroller

我上周遇到了一个问题。我的要求是,我必须创建一个自定义NSObject类,其中我必须为所有按钮单击操作编写所有导航方法。当我点击一个按钮时,按钮操作将根据点击& amp;从该自定义NSObject类中检索导航方法。导航。但它不起作用。我正在实施的内容,我在下面分享我的代码:

这是我的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类型

此处代码正在成功运行,没有警告/错误,但未导航到另一个类。

请帮帮我。

2 个答案:

答案 0 :(得分:2)

请使用NSNotificationCenter并使用该控制器的PushView。或者您可以使用自定义委托。为此您可以参考

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

答案 1 :(得分:2)

在按钮点击操作中您必须发送UINavigationController&amp;当前ViewController。因为NSObject类没有找到那个控制器。

在你的Button Action中输入此代码:

[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

构建代码,成功导航。 :)