簡體   English   中英

iPhone - 刪除顯示的視圖控制器

[英]iPhone - Removing a presented view controller

在視圖控制器上,我有一個按鈕,它將顯示另一個視圖控制器。 從第二個視圖控制器,我可以轉到其他視圖控制器,但不一定回到讓我在這里的那個。 如果是這種情況,我該如何刪除原始視圖控制器?

你的描述在這里有點不清楚。 這里可能有3種不同的情況:

  1. 移動導航控制器層次結構
  2. 將導航控制器層次結構分解為另一個視圖控制器
  3. 只需在導航控制器堆棧中添加另一個視圖控制器即可

在第一種情況下,您可以使用UINavigationController的方法:

- (UIViewController *)popViewControllerAnimated:(BOOL)animated
- (NSArray *)popToViewController:(UIViewController *)viewController animated:(BOOL)animated
- (NSArray *)popToRootViewControllerAnimated:(BOOL)animated

並使用viewControllers屬性在堆棧中導航。

在第二個,如果你想將層次結構分解為一個完全另一個視圖控制器,那么只需通過以下方式執行:

[[[UIApplication sharedApplication] keyWindow].rootViewController dismissViewControllerAnimated:YES completion:nil];
[[UIApplication sharedApplication] keyWindow].rootViewController = newController;

甚至更好:在第一行的完成塊中添加第二行。

或者在第三種情況下,如果你只想做一個例外,但是否則留在導航控制器堆棧中,那么使用方法:

- (void)addChildViewController:(UIViewController *)childController
- (void)removeFromParentViewController

這取決於您實際呈現當前視圖控制器的方式。 如果它是模態的,那么

[self.presentingViewController dismissViewControllerAnimated:YES completion:nil];

如果是使用導航控制器推送的:

[self.navigationController popViewControllerAnimated:YES];

暫無
暫無

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

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