在UINavigationController中切换RootView

时间:2013-02-07 01:23:59

标签: ios objective-c uinavigationcontroller

我目前正在尝试切换特定UINavigationController的根视图控制器。我相信这个问题已被多次询问,但似乎没有人在stackoverflow上给出正确答案。

我目前正在使用此作为指南:http://starterstep.wordpress.com/2009/03/05/changing-a-uinavigationcontroller%E2%80%99s-root-view-controller/#comments

但是,我似乎无法动态访问UINavigationController。当我在另一个.m文件中时,它将无法访问此导航控制器,因为我已在appdelegate.m文件中初始化它。

任何想法都将不胜感激。 提前致谢, 自由

2 个答案:

答案 0 :(得分:0)

如何使用notificationdelegate,您的viewController发送更改的rootViewController消息。

然后AppDelegate接收消息然后更改rootViewController。

答案 1 :(得分:0)

在app delegate中初始化UINavigationController时,只需保留对它的引用即可。在app delegate类上创建一个属性来存储引用:

@interface MyAppDelegate : UIResponder <UIApplicationDelegate> {
    UINavigationController *myRootViewController;
}

@property (nonatomic, retain) UINavigationController *myRootViewController;

然后,只要您想访问它,请执行以下操作:

MyAppDelegate appDelegate = (MyAppDelegate *)[UIApplication sharedApplication].delegate;
UINavigationController *rootViewController = appDelegate.myRootViewController;

(其中MyAppDelegate是您的app delegate类的名称。)