如何设置 subview-viewController 的 navigationController 属性?
Posted
技术标签:
【中文标题】如何设置 subview-viewController 的 navigationController 属性?【英文标题】:How can I set navigationController property of subview-viewController? 【发布时间】:2011-07-03 07:31:47 【问题描述】:我有一个 UIViewController,它还有另一个 UITableViewController 作为 subview。
表格视图是不可见的,但有时它可以通过用户的操作可见。 (例如,搜索表格视图。)
所以,两个新的控制器实际上没有关系,(但 UIViewController 有 UITableViewController 作为成员变量),但只有它的视图有父 - 子视图的关系。
在这种情况下,用户单击表格视图中的单元格项目,我必须将新的视图控制器推送到导航控制器。
但只有父 UIViewController 在 navigationController 中,子视图 UITableViewController 不在。
所以代码
[self pushViewController:viewController animated:YES];
在 UITableViewController 中失败。
我通过将父 UIViewController 的 navigationController 实例作为名为 parentNavigationController 的属性传递给 UITableViewController 解决了这个问题,我调用了
[self.parentNavigationController pushViewController:viewController animated:YES];
相反。
解决方案还不错,但我认为它有些混乱,我想知道是否有更多的清除解决方案。
朋友们,在这种情况下你是如何编程的?
我认为两个视图控制器的父子视图关系很混乱,首先。如果我在一个视图控制器中管理两个视图会更好吗?如果这样,UITableViewController 的视图属性可以不是表格视图? (并且该视图具有表视图作为子视图)
提前感谢您的支持。
【问题讨论】:
【参考方案1】:其实概念就是将视图控制器推送到导航控制器的导航栈。 UIViewControllers 只能呈现模态视图控制器,不能推送视图控制器。因此,向 self(这是一个 UIViewController)发送 pushViewController 消息是错误的。您可以使用[self.navigationController pushViewController:anotherViewController];
推送视图控制器
【讨论】:
对不起,[self pushViewController:viewController]
是我的错误,但我想知道如何将视图控制器推送到父视图控制器(父表示,视图之间,而不是视图控制器)视图控制器,而不将导航控制器作为属性传递.或者我想知道有没有更明确的方法。
@moon6pence,您只能使用导航控制器来推送视图控制器【参考方案2】:
在UITableViewController
控制器中使用self.navigationController
而不是self
。
[self.navigationController pushViewController:viewController animated:YES];
【讨论】:
对不起,[self pushViewController:viewController]
是我的错误,但我想知道如何将视图控制器推送到父视图控制器(父表示,视图之间,而不是视图控制器)视图控制器,而不将导航控制器作为属性传递.或者我想知道有没有更明确的方法。以上是关于如何设置 subview-viewController 的 navigationController 属性?的主要内容,如果未能解决你的问题,请参考以下文章