我遇到了今天的情況,這讓我想知道最佳實踐。我將非常感謝您如何處理這個簡化示例的任何意見:使用根視圖控制器來確定要加載哪個視圖
比方說,我們有一個需要登錄纔能有用的應用程序。所以,我們有幾個視圖和相應的視圖控制器:LoginView和MainView。 MainView是導航控制器的根視圖和根控制器。 LoginView是一個允許用戶登錄的視圖。
因此,第一次啓動應用程序時,應顯示LoginView,然後在完成登錄後顯示MainView。在隨後的啓動中,只會顯示MainView。
的方法之一,這將是處理所有這在applicationDidFinishLaunching:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
UIViewController *rootController = [[MainView alloc] init];
navigationController = [[UINavigationController alloc] initWithRootViewController:rootController];
[self.window addSubview:navigationController.view];
[self.window makeKeyAndVisible];
if (notLoggedIn) {
LoginView *vc = [[LoginView alloc] initWithNibName:@"LoginView" bundle:nil];
[rootController presentModalViewController:vc animated:NO];
}
return YES;
}
這將是很好,能夠在一個單獨的,專門的「根」視圖控制器來處理這個問題。這個控制器將被AppDelegate加載,並且它將依次加載哪個視圖控制器是合適的。任何人都可以提供意見,如果這將是一個更好的方法?如果是這樣,如何去做呢?
在這種情況下,您會推薦一種不同的方法嗎?
謝謝,所有。
非常感謝bryanmac!我喜歡這裏的情況。請檢查我的理解。我添加了一個類:AuthProvider。然後MainView控制器設置Model.authDelegate = AuthProvider。只要該控制器嘗試訪問受限數據,該模型就會調用AuthProvider的函數來確定用戶當前是否已通過身份驗證。如果它們不是,那麼該模型具有AuthProvider提供登錄提示。但是,如果AuthProvider要呈現模式視圖控制器,則需要引用MainView控制器。在初始化AuthProvider時,我是否從MainView傳遞它? – jmac