如何将带有NavigationBar(导航控制器)的TableView添加到视图中

时间:2012-06-19 15:51:12

标签: iphone objective-c uitableview uinavigationcontroller uitabbarcontroller

我有一个这样的标签式应用程序:

Screenshot

并且已经设置了应该看起来的所有内容,但它还无法正常运行。我已经google了我的问题,他们说你首先需要设置一个NavigationController,其中表视图为rootView,然后是NavigationBar,但我真的无法搞清楚。希望有人帮助我。

3 个答案:

答案 0 :(得分:0)

如果您使用的是故事板,请选择您的视图控制器,转到“编辑”菜单,然后选择“嵌入导航控制器”。

答案 1 :(得分:0)

根据您对我的问题评论的回复,您应该做的是:

首先,为了使其看起来像设置应用表,您需要将UITableView的样式更改为UITableViewStyleGrouped

您的层次结构将包含以下内容:

实际添加到UITabBarController viewControllers数组中的viewcontroller(因为我看到你有一个tabbar作为最低级别的导航)应该是UINavigationController。导航控制器的根视图控制器应该是您创建的包含表视图的uiviewcontroller子类。 (假设它叫SettingsViewController

SettingsViewController *settingsViewController = [[SettingsViewController alloc] init];

UINavigationController *settingsNavController = [[UINavigationController alloc] initWithRootViewController:settingsViewController];

您可能需要为您想要的每种类型的详细信息窗格创建不同的UIViewController子类(如果它们具有不同的功能)。

didSelectRowAtIndexPath UITableViewDelegate函数中,您将创建相应的详细视图控件并将其推送到导航堆栈。

假设您有一个音量设置视图控制器作为示例。以下是我刚刚提到的函数中的代码。请记住,您还需要实际检查所选行的索引和/或部分,以确定应显示哪个详细视图。

VolumeSettingsViewController *volumeSettings = [[VolumeSettingsViewController alloc] init];

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

默认情况下,此功能与Apple Settings应用程序导航非常相似。导航栏将自动有一个“后退”按钮,可以带您返回设置视图。

答案 2 :(得分:0)

如果不使用故事板,假设这将在代码中完成,则需要按照其层次结构的相反顺序创建事物 - 如下所示:

  • 使用initWithNibName创建Einstellungen选项卡的TableViewController实例:
  • 使用initWithRootViewController创建一个UINavigationController:并将Einstellungen设置为根
  • 创建UITabBarController并将导航控制器设置为此标签栏控制器的视图控制器之一
  • 将标签栏控制器作为子视图添加到应用程序委托中的主窗口

这将创建此层次结构:

标签栏控制器   - >视图控制器:导航控制器 - >根视图控制器:Einstellungen