Ios 在UINavigationController内切换根视图

Ios 在UINavigationController内切换根视图,ios,objective-c,uinavigationcontroller,Ios,Objective C,Uinavigationcontroller,我当前正在尝试切换特定UINavigationController的根视图控制器。我相信这个问题已经被问了很多次了,但似乎没有人对stackoverflow给出正确的答案 我目前将此作为指南: 但是,我似乎无法动态访问UINavigationController。当我在另一个.m文件中时,它将无法访问此导航控制器,因为我已在appdelegate.m文件中对其进行了初始化 任何想法都将不胜感激。 提前感谢,, freedom如何使用viewController的通知或委托发送更改的rootVie

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

我目前将此作为指南:

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

任何想法都将不胜感激。 提前感谢,,
freedom

如何使用viewController的
通知
委托
发送更改的rootViewController消息


和AppDelegate以接收消息,然后更改rootViewController。

在应用程序代理中初始化UINavigationController时,只需保留对它的引用即可。在应用程序委派类上创建属性以存储引用:

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

@property (nonatomic, retain) UINavigationController *myRootViewController;

(其中MyAppDelegate是应用程序委派类的名称。)

您是要更改整个应用程序的根视图控制器,还是要更改特定UINavigationController的根视图控制器?你的第一句话似乎与文章的标题冲突,所以我说不出来。一个特定的UINavigationController。我只有一个。
MyAppDelegate appDelegate = (MyAppDelegate *)[UIApplication sharedApplication].delegate;
UINavigationController *rootViewController = appDelegate.myRootViewController;