如何从appDelegate重新加载rootViewController

时间:2014-04-22 22:26:35

标签: ios objective-c uinavigationcontroller rootview

我有一个UINavigationController,并在其上加载了一个rootView,用于控制我的应用程序的登录过程。

我最近在我的应用程序委托中添加了一些代码,当我发出此注销请求时,我会检查我的设置包以查找注销请求我想重新加载rootView以便加载登录hud,或者只是调用rootView中的方法这表示登录hud。

这是我为appdelegate中的navigationController设置rootView的方法

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window.rootViewController = self.navigationController; //Adds RootViewController to the NavigationController interface
    // etc
}

我想知道有没有办法重新加载rootViewController?或者在应用程序委托中调用它的方法?

1 个答案:

答案 0 :(得分:2)

可以做到,但它很复杂。如果可能的话,最好避免它,并且每个应用程序的具体要求都会有所不同。如果没有看到您的应用程序的源代码,我们无法告诉您它是如何完成的。

基本过程是你需要从视图中删除所有这些并将所有引用设置为nil,然后从代码或通过再次加载nib重新创建它。

更好的选择是将rootViewController保留在原来的位置,并在其顶部显示模态登录视图控制器。用户登录后,发送根视图控制器可以观察到的NSNotification,并填充其数据。

等到通知发送后隐藏登录控制器,并考虑让根视图控制器在执行与登录有关的任何网络操作时阻塞主线程。这样就是登录视图(带有“登录” ...“消息?”将保持可见,直到根视图完全填充。