簡體   English   中英

iOS:如何檢測彈出或關閉后是否出現ViewController

[英]iOS: how to detect if viewcontroller appears after pop or dismiss

我有一個視圖控制器VC1,並且正在對其執行以下兩項操作:

  1. 通過調用從VC1的導航控制器中推送另一個視圖控制器VC2

[VC1.navigationController pushViewController: animated:YES];

  1. 通過調用從VC1呈現另一個視圖控制器VC3。

    UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:VC3]; [VC1 presentViewController:navController animated:YES completion:nil];

現在,當我從VC2轉到VC1時,我正在打電話

[VC2.navigationController popViewControllerAnimated:YES];

從VC3到VC1我正在打電話

[VC3.navigationController dismissViewControllerAnimated:YES completion:nil];

我的問題是,當我回到VC1時,我如何知道我來自VC2(關閉)還是VC3(彈出)?

注意:VC1被加載為父視圖控制器VC4中的子視圖控制器。

最好的方法是讓childViewController回調到當前的視圖控制器。 通過這樣做,childViewController將不需要知道它是以模態顯示還是在導航堆棧等中的實現細節。

有塊看起來像

@interface VC2 : UIViewController

@property (nonatomic, copy) void (^completion)(VC2 *viewController);

@end

您將設置此塊像這樣

VC2 *viewController = VC2.new;
viewController.completion = ^(VC2 *viewController) {
  [viewController.navigationController popViewControllerAnimated:YES];
};

[VC1.navigationController pushViewController:viewController animated:YES];

現在您以前打電話的地方

[VC2.navigationController popViewControllerAnimated:YES];

您改為致電

self.completion(self);

您可以將要與之關聯的任何邏輯從完成處理程序中的特定viewController返回

暫無
暫無

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

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