gpt4 book ai didi

iphone - 嵌套的 UIViewController 需要推送到根 UINavigationController

转载 作者:行者123 更新时间:2023-12-03 20:00:15 26 4
gpt4 key购买 nike

我有一个带有 UINavigationController 的应用程序,其中包含根 UIViewController 子类 (PagingViewController),它管理并充当水平分页 UIScrollView 的委托(delegate)。在这个UIScrollView的每个页面上,都有一个垂直滚动的UITableView,每个UITableView由它自己的UIViewController子类(PageViewController)管理。看起来像这样...

UINavigationController
PagingViewController (root VC of navigation controller)
PageViewController (instance 1)
PageViewController (instance 2)
PageViewController (instance 3)

HowToPushThisViewController (this is what I'd like to push onto the current root, PagingViewController, from one of its sub view controllers)

我想做的是,在 PageViewController(UITableView 委托(delegate))的 didSelectRowAtIndexPath: 方法中,将新的 UIViewController 推送到 UINavigationController 上(在 PagingViewController 之上)。

问题是 PageViewController 的 navigationController 属性为零,所以我无法将其推送到那里。我认为这是 nil,因为它不是直接位于 UINavigationController 的堆栈上,而是由 PagingViewController 包含,而 PagingViewController 位于堆栈上。我尝试在将每个PageViewController添加到PagingScrollView之前设置其navigationController属性,但它似乎是只读的(UINavigationController如何设置自身?)。

我觉得嵌套的 UIViewControllers 是健全的架构(每个都需要管理并充当其 View 的委托(delegate)),并且想要从子 Controller 推送导航是合理的,所以我不确定最佳实践用于从嵌套 Controller 访问和推送。希望有一些我忽略的简单的东西可以访问并推送到根导航 Controller 。

最佳答案

合乎逻辑的做法是设置页面 View Controller 的 parentViewController 属性,但遗憾的是,它也是只读的。 Apple 不鼓励自定义 View Controller 层次结构(除了支持的带有选项卡栏、导航和分割 View Controller 的层次结构之外)。

在您的情况下,我将在 PageViewController 类上定义一个自定义 parentVC 属性,PagingViewController 在实例化其子级时将其设置为自身。然后,PageViewController可以通过

到达导航 Controller
self.parentVC.navigationController

关于iphone - 嵌套的 UIViewController 需要推送到根 UINavigationController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4250989/

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