[英]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.