2009-01-27 75 views
11

我有一个简单的基于NavigationController的应用程序。主窗口显示一个TableView并选择一个项目加载一个子视图。我使用Interface Builder进行UI视图。如何将TabBar添加到基于NavigationController的iPhone应用程序

现在我想添加一个TabBar到应用程序。我在哪里放?我需要一个TabBarController吗?它应该放在MainWindow.xib还是RootViewController.xib中?

如何将它与我的NavigationController绑定在一起?

+0

这将帮助我看到一个实际的完整工作xcode项目。有没有人有链接? – bentford 2009-04-15 19:29:33

回答

2

查看UICatalog示例代码。它有很多很棒的东西,包括从一个视图到另一个视图的过渡。

在你的情况,你需要使用的UITableView委托方法

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 

在该方法中,您将创建并显示您的标签视图控制器。这可能是一个具有关联的Nib的自定义控制器,或者您可以根据自己的情况在代码中创建整个事物。

2

简单的答案是让它成为加载导航控制器的标签栏应用程序。

标签栏将成为您的最高等级组件,然后您可以为每个标签加载导航控制器。从那里它应该是相当标准的东西。前一阵子我必须学习这个难题。

您可以从XCode中的基本选项卡栏应用程序模板开始,它应该使用2个简单视图设置基本选项卡栏。

+0

对,但我该怎么做? – 2009-01-27 11:22:24

2

只要有可能,最好在选项卡式应用程序中嵌入导航栏。以另一种方式进行操作会产生一些复杂性,在与IB一起完成时很困难,并且会导致很多麻烦。

+0

你是说我应该创建一个基于TabBarController的新项目,然后将我的导航控制器代码整合到它中?我宁愿保留我现有的项目,但如果它会产生很多麻烦,我想我可以开始一个新的项目。 – 2009-01-27 11:26:05

4

我在几个应用程序中这样做。将标签栏添加到基于navigationController的应用程序的技巧是不使用TabBarController。为视图添加一个选项卡栏,使该视图的视图控制器成为TabBarDelegate,并响应视图控制器代码中选项卡栏上的用户选择。

我使用标签栏额外添加视图标签栏的视图作为子视图,重新加载不同的数据集表视图,重新加载一个UIPickerView等

+0

如果您有超过5个选项卡并希望允许用户通过more ...按钮“编辑”主选项卡,该怎么办?这是你可以免费得到的选项卡控制器 – 2009-02-23 09:55:47

+0

我不知道答案。我从来没有在tabBar中使用超过4个选项卡,并且从不需要允许用户编辑栏。我只知道你不能真的添加一个TabBarController到基于NavigationBar的应用程序 – Alpinista 2009-02-24 19:50:33

2

您可以使用Interface Builder编辑主窗口.xib,并将一个Tab Bar Controller添加到您的导航控制器。您还可以使用IB's Inspector窗口将UITabBarController的视图控制器更改为View/Navigation/Table View/Image Picker Controller。它会工作。

但是,我真的不建议将Tab Bar Controller放入导航控制器。如果你走得更远(使其更复杂),这些控制器之间的关系会变得混乱。

假设您在选项卡栏控制器中有表格视图控制器,并且想要调出详细视图。根据设计,您可能想要告诉导航控制器将视图推送到堆栈,但这样做会使细节视图与您的选项卡栏控制器(在导航控制器下)和Table View Controller将关系保持为详细视图的父级相同。这很奇怪,至少对我来说...

相关问题