我正在使用tableView
和几个详细信息页面构建应用。我从masterViewController
模板开始,但发现我想要自定义tableView
布局,因此我删除了navigationController
并添加了viewController
tableView
内。一切都很好,除了我无法摆脱detailView
的事实。我使用detailView
按钮在cancel
的顶部添加了导航栏,但[self.navigationController popToRootViewControllerAnimated:YES];
无效(我猜是因为没有导航控件)。我也尝试过使用popToViewController
方法,但无法使用它。
我的问题是:为了能够“弹出”视图,我该怎么办?我假设当我从tableView
到detailView
经过segue时,视图被推到某处,所以我该如何回去?我是否必须使用某种形式的navigationController
?
任何方向或帮助都会很棒!
答案 0 :(得分:1)
简短回答:是的
不要删除导航控制器,否则你将无法弹出和推送视图(你仍然可以使用模态转换)
所有导航控制器确实是,是一个viewControllers数组的管理器。如果您查看self.navigationController.viewControllers
属性,则可以访问导航链,并将其更改为NSMutableArray
并进行更改并将其分配回来。仅供参考。
答案 1 :(得分:1)
根据我的说法,使用NavigationController将是一个不错的选择..
如果您使用的是NavigationController,则可以使用[self.navigationController popViewControllerAnimated:YES];
代替popToRootViewController来弹出和推送
[self.navigationController pushViewControllerAnimated:YES];
如果您使用“观看次数”,则使用[self.view removeFromSuperview]
删除整个视图,或删除所有使用此视图的视图:
for (UIView *view in [self.view subviews])
{
[view removeFromSuperview];
}
希望这会有所帮助..
答案 2 :(得分:-1)
为了浏览您的应用,您的应用需要导航控制器,如果您在故事板中设置应用,则可以从右侧拖动导航控制器,然后将其链接到视图控制器。
你的弹出代码可能无法正常工作,因为你没有导航控制器,也就是self.navigationController是nil,
如果您主要使用代码制作应用程序,则可以分配导航控制器
UINavigationController* navigationController = [[UINavigationController alloc] initWithRootViewController: masterViewController];
从那里你可以推送到其他页面或弹出到以前的页面
在故事板中向页面顶部添加导航栏不会为视图控制器提供导航功能,如果您想将ui导航栏设置为实际导航栏,它只是坐在那里的用户界面对象那么你可以在代码中设置它
[self.navigationController setNavigationBar:navigationBarProperty];
所以要回答你的问题,你需要一个导航控制器和故事板 - >导航控制器 - > tableView - > detailView应该做的伎俩