【问题标题】:Present a ViewController that is embedded in Navigation Controller呈现一个嵌入在导航控制器中的 ViewController
【发布时间】:2019-06-02 20:31:51
【问题描述】:

我有一种情况,应该以编程方式呈现由 VC(嵌入在 NavController 中)制作的故事板。

SomeVC -> 呈现 NavController(rootVC) -> rootVC -> 推送 subVC

在这个表示上,subVC 应该有一个返回按钮来返回到 rootVC,但我不能以这种方式实现它。将提供我已经尝试过的示例代码。

这会直接推送rootVC:

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"storyBoard" bundle: nil];
UIViewController * vc = [storyboard instantiateViewControllerWithIdentifier:@"rootVC"];
[self.navigationController presentViewController:vc animated:YES completion:nil];

还尝试推送navigationController本身,ID已在storyboard上设置:

UINavigationController *navController = [storyboard instantiateViewControllerWithIdentifier:@"navigationController"];
[self presentViewController:navController animated:YES completion:nil];

编辑:情节提要实现如下所示

【问题讨论】:

    标签: ios objective-c uinavigationcontroller


    【解决方案1】:

    我不确定我是否理解正确。你想展示一个导航控制器并且已经在里面有那些 rootVC 和 subVC,对吧?所以在展示之后,您希望 subVC 立即带有返回按钮。

    如果是这种情况,您需要告诉导航控制器在呈现 subVC 之前推送它

    UINavigationController *navController = [storyboard instantiateViewControllerWithIdentifier:@"navigationController"];
    UIViewController *subVC = [storyboard instantiateViewControllerWithIdentifier:@"subVC"];
    [navController pushViewController:subVC animated:NO];
    [self.navigationController presentViewController:vc animated:YES completion:nil];
    

    【讨论】:

    • 抱歉给您带来了困惑,对于初学者来说,我只想显示 rootVC,当用户点击某个按钮时,它会推送 subVC。现在的问题是当我展示 navController 时,subVC 没有 navigatoin 的后退按钮
    • subVC 是使用由故事板制作的 segue 调用的。在 Storyboard 上,rootVC 已经嵌入到 navigationController 中。
    • 有趣。 subVC 的导航项是否有左栏按钮项?
    • 故事板上的默认后退按钮,是的。
    • 我认为您可能需要在运行时对其进行调试,看看在运行时是否设置了左键项。你给我看的一切对我来说都很正常。我现在能想到的一种情况是您在运行时更改了左栏按钮项
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-16
    • 1970-01-01
    • 2018-02-16
    相关资源
    最近更新 更多