【问题标题】:Navigation Issue with UITableViewUITableView 的导航问题
【发布时间】:2012-03-01 06:58:32
【问题描述】:

如何使用 UITableViewController 导航回上一页。我试图在屏幕顶部显示带有导航按钮的导航栏,但导航栏不会显示。我知道你必须给前一个视图一个标题,但是当我这样做时,它不会显示任何内容。此外,由于它是 UITableViewController,我无法删除导航栏并将按钮添加到主视图。我想做的就是显示我的列表,并可以选择使用左上角的一个按钮导航回上一个列表。

【问题讨论】:

  • 你在使用 UINavigationController。像这样的层次结构: UINavigationController > UITableViewController(您的列表)> UIViewController(或另一个带有详细信息的 UITableViewController)。如果是这样,您将自动在导航栏中获得返回按钮。
  • 不,我不是。我刚刚在 UITableViewControllers 中使用 presentModalViewController 向前导航。
  • 您有两个选择。无论是按照@jonkroll 的建议使用 UINavigationController,还是使用 UIBarButtonItem 将 UIToolBar 添加到 modalView 的顶部或底部,例如关闭并将其链接到关闭视图的方法。

标签: iphone ios navigation uitableview


【解决方案1】:

您使用 NavigationController 遇到的问题是您的 tableViewController 不在 NavigationController 层次结构中。添加 tableViewController 时是否希望您这样做:

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

然后你可以这样做来添加你的TableViewController:

[self.view addSubview:navigationController.view];

如果您不希望导航栏出现在 tableViewController 上,请使用:

self.navigationController.navigationBarHidden = YES;  

在您的TableViewController viewWillAppear 方法中。

当您要在刚刚使用的 tableView 之后添加视图时:

[self.navigationController pushViewController:someViewController animated:YES];

【讨论】:

  • 如何获得 yourTableViewController?只是自己吗?
  • yourTableViewController 将在您创建您谈论的 TableViewController 的任何位置。例如,您有 myFirstViewController,当您按下 myFirstViewController 中的按钮时,它会将 TableViewController 添加到屏幕上。所以你做类似 UITableViewController *yourTableViewController = [[UITableViewController alloc] init];您使用的 TableViewController 之前的 viewController 是什么?
  • 我从不分配 TableView 我所做的只是创建一个新文件,它是一个 UITableViewController。我不加一个。我继承 UITableViewController 而不是 UIViewController。即使我开始觉得确实如此,但如果这有所作为的话。
  • 你是如何让 tableView 显示的,在它之前有什么显示的吗?还是 tableView 是你的第一个屏幕?
  • tableview 是我的第一个屏幕。创建 .m 文件时,我使用 UITableViewController 附带的包含方法。它会自动调用 numberOfRowsInSection、numberOfSectionsInTableView 和 cellForRowAtIndexPath,而无需我做任何事情。
【解决方案2】:

给子视图一个标题是不够的。在呈现之前,您需要为子视图的导航项指定一个标题。例如,在父视图中,在将视图推送到导航堆栈之前,请执行以下操作...

[MyChildView.MyNavigationItem setTitle:@"A cool Title"];

【讨论】:

  • MyChildView 是 UITableViewController .m 文件的名称,因此例如我有一个名为 MealPlan 的页面。在调用 presentModalViewController 之前,我会做 [MealPlan.MyNavigationItem setTitle...] MyNavigationItem 也是 ios 的一部分,还是我必须创建的其他东西。抱歉 ios 新手,遗漏了一些小特质。或者在这种情况下是一个主要的
【解决方案3】:

对于您尝试实现的导航,您应该使用UINavigationController。它已经具有您使用内置的导航栏和后退按钮描述的功能。

要移动到下一个屏幕(可以是 UITableViewController),您使用 pushViewController:animated: 并移动到上一个屏幕,您使用 popViewControllerAnimated:(尽管内置的后退按钮会为您执行此操作)。

如果您还不熟悉UINavigationController class documentation,我建议您阅读它。

【讨论】:

  • 我会试一试的。只是想仔细检查一下。它说它从 UIControllerView 继承 UITableViewController 从 UIControlView 继承。
  • 是 UITableViewController 继承自 UIViewController
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-24
相关资源
最近更新 更多