簡體   English   中英

在加載另一個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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM