我目前正在尝试为特定的 UINavigationController 切换根视图控制器。我相信这个问题已被多次问过,但似乎没有人在 stackoverflow 上给出正确的答案。
但是,我似乎无法动态访问 UINavigationController。当我在另一个 .m 文件中时,它将无法访问此导航控制器,因为我已在我的 appdelegate.m 文件中对其进行了初始化。
任何想法将不胜感激。提前感谢,自由
我目前正在尝试为特定的 UINavigationController 切换根视图控制器。我相信这个问题已被多次问过,但似乎没有人在 stackoverflow 上给出正确的答案。
但是,我似乎无法动态访问 UINavigationController。当我在另一个 .m 文件中时,它将无法访问此导航控制器,因为我已在我的 appdelegate.m 文件中对其进行了初始化。
任何想法将不胜感激。提前感谢,自由
如何使用 anotification
或 a delegate
,您的 viewController 来发送更改的 rootViewController 消息。
并且AppDelegate 接收消息然后改变rootViewController。
当您在应用程序委托中初始化 UINavigationController 时,只需保留对它的引用。在您的应用委托类上创建一个属性来存储引用:
@interface MyAppDelegate : UIResponder <UIApplicationDelegate> {
UINavigationController *myRootViewController;
}
@property (nonatomic, retain) UINavigationController *myRootViewController;
然后每当您想访问它时,请执行以下操作:
MyAppDelegate appDelegate = (MyAppDelegate *)[UIApplication sharedApplication].delegate;
UINavigationController *rootViewController = appDelegate.myRootViewController;
(其中 MyAppDelegate 是您的应用委托类的名称。)