[英]Present modal view controller - interact with presenting viewcontroller
[英]Presenting a modal view controller when loading another ViewController
在用戶可以使用我的應用程序之前,他必須登錄。 登錄后,構建數據庫是因為我需要來自服務器的信息來構建它。
因此我的根ViewController是LoginViewController,它在成功登錄時以模態方式呈現實際應用程序(navigationController堆棧)。
如果用戶已在應用程序啟動時登錄(我使用NSUserDefaults存儲憑據),則LoginViewController應立即顯示應用程序。 因此我覆蓋了這個方法:
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
NSInteger userId = [[NSUserDefaults standardUserDefaults] integerForKey:@"selfUser"];
if (userId != 0) {
//[self performSelector:@selector(presentMainViewController) withObject:nil afterDelay:2];
[self presentMainViewController];
}
}
- (void)presentMainViewController {
mainViewController = [[MainViewController alloc] init];
mainViewController.managedObjectContext = managedObjectContext;
navigationController = [[UINavigationController alloc] initWithRootViewController:mainViewController];
navigationController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentModalViewController:navigationController animated:NO];
}
[self presentMainViewController];
執行但控制器沒有顯示。 如果我使用上面的行,它確實有用。
我在哪里放置代碼使其工作?
發送viewDidAppear
時,可能無法完全創建視圖堆棧。 因此,您應該使用perfomSelector:withDelay
在運行循環上對調用進行排隊。 通過這種方式,您可以確保在代碼運行時構建視圖堆棧。
干杯!
我有類似的情況,我解決了將代碼移動到viewWillAppear(而不是viewDidAppear)。 值得一試。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.