簡體   English   中英

從AppDelegate取消viewController

[英]Dismissing viewController from AppDelegate

我正在從AppDelegate提供一個教程視圖:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

....

  EERootVC *rootVC = (EERootVC *)self.window.rootViewController;
    UINavigationController *navcon = (UINavigationController*)rootVC.contentViewController;

    EETutorialRootVC *rootTutorialViewController = [rootVC.storyboard instantiateViewControllerWithIdentifier:@"EETutorialRoot"];

[navcon pushViewController:rootTutorialViewController animated:NO];

return YES
}

完成后,如何取消這個新視圖?

我已經試過了:

[self.navigationController  popViewControllerAnimated:YES];

哪個可行,但它返回的視圖似乎被切斷(向上移動?)

它不會是self因為在AppDelegate調用self會引用自身(將為AppDelegate

如果要從AppDelegate消除它,只需執行與呈現它相同的操作即可:

[rootTutorialViewController popViewControllerAnimated:YES]; 

但是您更有可能不會在AppDelegate關閉它,然后您更有可能在視圖控制器主類中關閉它,這就是您將自己稱為self的地方。

嗯,看來您需要使用一些自定義設置來提供深入的了解,因此我們可以為您提供更好的答案。

如果window.rootViewController是UINavigationController的實例,則將具有默認的行為,如果將ViewController推入並彈出,則一切看起來都會很好。

但是,您是從window.rootViewController的自定義屬性獲取UINavigationController的。 這表明EERootVC是一些自定義的ContainerViewController,我敢打賭,在那里您將EERootVC.contentViewController添加到它的視圖並設置它的框架是有問題的。

例如,將UINavigationController設置為Window的rootViewController,我敢打賭它也能按預期工作。

除此之外,您可以在不使用動畫的情況下將其推送,而在使用動畫時將其關閉。 為了獲得良好的用戶體驗,您可能需要再次考慮該方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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