2017-07-25 114 views
2

是否可以重置根視圖控制器?重置意味着重置它的初始狀態,所以viewDidLoad將被再次調用。我正在使用UITabBarController,當我註銷時,我希望先前加載的所有選項卡都被卸載。如何重置根視圖控制器

+0

開始他的生命週期開始創建新實例並設置爲根視圖控制器可能幫助 –

+0

爲什麼不使用'viewWillAppear'來重置狀態? – Hodson

+0

[可以在導航控制器中再次使用viewDidload方法調用?](https://stackoverflow.com/questions/33778426/does-viewdidload-method-call-again-on-going-back-在屏幕上導航控制) – Himanth

回答

2

您可以通過註銷行動TabBarController的情況下設置爲RootViewController的做到這一點。

夫特3:

let storyBoard = UIStoryboard(name: "Main", bundle: nil) 
let tabBarController = storyBoard.instantiateViewController(withIdentifier: "TabBarController") as! UITabBarController 
UIApplication.shared.keyWindow?.rootViewController = tabBarController 
UIApplication.shared.keyWindow?.makeKeyAndVisible() 

目標C:

UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; 
UITabBarController *tabBarController = [storyBoard instantiateViewControllerWithIdentifier:@"TabBarController"]; 
[[[UIApplication sharedApplication] keyWindow] setRootViewController:tabBarController]; 
[[[UIApplication sharedApplication] keyWindow] makeKeyAndVisible]; 
0

如果您使用的是Tabbarcontroller導航控制器然後導航到導航控制器,否則去Tabbarcontroller原樣

let appDelegate = UIApplication.shared.delegate as! AppDelegate 
let mainStoryboard = UIStoryboard(name: "Main", bundle: nil) 
let tabBar = mainStoryboard.instantiateViewControllerWithIdentifier("TabBarController") as! TabBarController 
appDelegate.window?.rootViewController = tabBar 
appDelegate.window?.makeKeyAndVisible() 
0

UIViewController設置view屬性nil

UIApplication.shared.keyWindow?.rootViewController?.view = nil 

它會強制UIViewController從下一次撥打self.view

相關問題