0

我正在构建一个带有一个tableView和几个详细信息页面的应用程序。我从masterViewController模板开始,但发现我想自定义我的tableView布局,所以我删除了navigationController并在里面添加了viewController一个tableView。一切都很好,除了我无法摆脱detailView. detailView我用一个按钮在顶部添加了一个导航栏cancel,但[self.navigationController popToRootViewControllerAnimated:YES];它不起作用(我猜是因为没有导航控制器)。我也尝试过使用该popToViewController方法,但也无法使其正常工作。

那么我的问题是:我必须做什么才能“弹出”视图?我假设当我从 segue 转到 via segue 时,视图被推送到某个地方tableViewdetailView那么我该如何返回?我必须使用某种形式navigationController吗?

任何方向或帮助都会很棒!

4

3 回答 3

1

简短的回答:是的

不要删除导航控制器,否则您将无法弹出和推送视图(尽管您仍然可以使用模态转换)

真正的导航控制器是一组视图控制器的管理器。如果您查看该self.navigationController.viewControllers属性,您可以访问导航链,并通过将其放入 aNSMutableArray并进行更改并将其分配回来来更改它。仅供参考。

于 2013-05-23T19:19:21.320 回答
1

在我看来,使用 NavigationController 将是一个不错的选择。

如果您使用的是 NavigationController,则可以使用[self.navigationController popViewControllerAnimated:YES];而不是 popToRootViewController 来弹出和推送

[self.navigationController pushViewControllerAnimated:YES];

如果您使用“视图”,则用于[self.view removeFromSuperview]删除整个视图,或删除所有视图使用此:

for (UIView *view in [self.view subviews]) 
  {
     [view removeFromSuperview];
  }

希望这可以帮助..

于 2013-05-23T19:19:35.270 回答
-1

为了在您的应用程序中导航,您的应用程序需要一个导航控制器,如果您在情节提要中设置应用程序,您可以从右侧拖动导航控制器,然后将其链接到视图控制器。

您的弹出代码可能不起作用,因为您没有导航控制器,也就是 self.navigationController 为零,

如果您主要在代码中制作应用程序,您可以分配一个导航控制器

UINavigationController* navigationController = [[UINavigationController alloc] initWithRootViewController: masterViewController];

从那里您可以推送到其他页面或弹出到以前的页面

在情节提要的页面顶部添加导航栏不会为您的视图控制器提供导航功能,它只是坐在那里的用户界面对象,如果您想将 ui 导航栏设置为您的实际导航栏,那么您可以在代码中设置

[self.navigationController setNavigationBar:navigationBarProperty];

所以要回答你的问题,你需要一个导航控制器,并且在故事板 -> 导航控制器 -> tableView -> detailView 中应该可以解决问题

于 2013-05-23T19:19:12.627 回答