gpt4 book ai didi

ios:在导航 Controller 中管理一些 View Controller

转载 作者:行者123 更新时间:2023-11-29 03:27:41 24 4
gpt4 key购买 nike

在我的应用程序中,我需要管理导航 Controller 并将其移动到这些 View Controller 中,所以我这样做了

UINavigationController *navController = (UINavigationController*) [self.storyboard instantiateViewControllerWithIdentifier:@"navigationcontroller"];
[navController addChildViewController:firstViewController];
[navController addChildViewController:secondViewController];
[navController addChildViewController:thirdViewController];
[navController addChildViewController:fourthViewController];
[self presentViewController:navController animated:YES completion:nil];

第一个问题:导航在第一个第四 View Controller 打开,为什么?

第二个问题:如果从第二个 View Controller 我首先要通过:

[[self navigationController] pushViewController:self.navigationController.viewControllers[0] animated:NO];

我遇到了一个崩溃,上面写着:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Pushing the same view controller instance more than once is not supported

为什么?你能帮我吗?

最佳答案

第一个问题

每次使用“addChildViewController:”时,新 Controller 都会添加到堆栈顶部。最后插入的一个,您的 fourthViewController,位于堆栈的顶部,因此当您调用该方法时会显示它

[self presentViewController:navController animated:YES completion:nil];

第二个问题

这取决于pushViewController:方法本身。在 Apple documentation医生说:

The viewController added cannot be an instance of tab bar controller and it must not already be on the navigation stack.

您的应用程序崩溃,因为 self.navigationController.viewControllers[0] 已位于导航堆栈中。

关于ios:在导航 Controller 中管理一些 View Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20249122/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com