我正在使用故事板開發應用程序。此應用需要用戶登錄。通過故事板執行從任意視圖的初始視圖
故事板有一個登錄視圖作爲起始。當登錄成功時,它會執行一個跳轉到TabViewController。
在任何對API的調用中,我檢查服務器是否返回401(未授權)。如果發生這種情況,布爾值被設置爲false(boolean isLogged)。 AppDelegate觀察這個布爾值。如果值更改爲false,我想將用戶返回到登錄屏幕(請記住,故事板上的初始視圖)。
下面是一些代碼:
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
if ([keyPath isEqualToString:@"isLogged"]) {
BOOL logged = [[change objectForKey:NSKeyValueChangeNewKey] boolValue];
if (logged) {
NSLog(@"Logged in succesfully!");
} else {
NSLog(@"Logout performed");
[self.window makeKeyAndVisible];
[self.window layoutSubviews];
}
}
這工作得很好,但是當我嘗試登錄一次LoginOK賽格瑞不被執行。
我已經嘗試了很多其他的選擇,這樣的事情:
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
UIViewController *loginController = [storyboard instantiateViewControllerWithIdentifier:@"Login"];
[source presentModalViewController:loginController animated:YES];
但問題是,我不知道哪個視圖控制器進行註銷。 Source必須是應用程序中顯示的當前View Controller,不是嗎?
你如何解僱你的登錄視圖?我得到'警告:嘗試從視圖控制器,而當一個演示文稿或解僱正在進行!'錯誤:(錯誤:( –
expert
我現在要做的是用loginViewController替換rootViewController。所以: self.view.window。 rootViewController = [self.view.window.rootViewController.storyboard instantiateViewControllerWithIdentifier:@「LoginView」]; –