【问题标题】:detect the parent who open uiviewcontroller检测打开 uiviewcontroller 的父母
【发布时间】:2015-02-22 07:31:07
【问题描述】:

我有两个不同的场景调用同一个 uiviewcontroller, 场景1: 在主 uiviewcontroller 中单击一个按钮会创建一个虚拟导航器并将其呈现如下:

UINavigationController* dummyNavigation = [[UINavigationController alloc]init];
[dummyNavigation addChildViewController:bViewController];
[self presentViewController:dummyNavigation animated:NO completion:NULL];

场景 2: 在主 uiviewcontroller 中单击一个按钮,在其中打开一个 uitableviewcontroller 每次单击一行打开bViewController,如下所示:

[self.navigationController pushViewController:bViewController animated:NO];

我已经将bViewController的导航栏设置为隐藏了

[self.navigationController setNavigationBarHidden:YES];

并创建了一个按钮来用这段代码替换导航的后退按钮

[self dismissViewControllerAnimated:YES completion:NULL];

问题:在这两种情况下,后退按钮代码都会返回到主 uiviewcontroller,但在场景 2 中,它预计会返回到 uitableviewcontroller

【问题讨论】:

    标签: objective-c uitableview uiviewcontroller uinavigationcontroller


    【解决方案1】:

    在关闭时检查,如果它在导航控制器中则弹出,否则关闭。

    if (self.navigationController) {
        [self.navigationController popViewControllerAnimated:YES];
    } else {
        [self dismissViewControllerAnimated:YES completion:nil];
    }
    

    【讨论】:

    • 您的答案不正确,因为if (self.navigationController) 总是正确 在场景 1 中有一个 dummyNavigation 而场景 2 它是 uitableviewcontroller 的导航控制器
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-03
    • 2018-01-01
    相关资源
    最近更新 更多