2014-01-09 25 views
0

我已经使用Xcode 5中的故事板几乎完善了我的第一个iOS应用作为单个视图。现在,我想包含带有三个副本的选项卡栏那相同查看。即将以完全相同的方式显示三个不同的数据集,可从选项卡中进行选择。将故事单视图应用转换为具有多个相同视图的选项卡式视图

我很努力的做这种转换的方法。据我了解,我的模型和控制器代码可以保持一致(除了获取每个数据的独特数据外),但是我失去了修改故事板还是以编程方式进行编辑。

故事板方法似乎是错误的,因为每个视图都需要自己的定义,当它们应该共享相同的定义时。代码方法更有意义,但我正在努力找到所有的部分,使其工作。我已经做了几次,并且在模拟器中启动时无法使标签视图显示甚至显示。

我知道我现有的视图需要缩小以适应,但我有自动布局工作,所以应该照顾自己。

为了澄清,我从“单视图”模板构建了应用程序,并使用当前的故事板来启动和连接所有内容。

+1

我不知道你的问题是什么。在故事板中,您可以多次复制和粘贴一个视图控制器,并将它们连接到一个标签栏控制器。这将为您提供单个控制器类的多个实例。这是你想要做的吗? – rdelmar

+0

我没有意识到故事板中有简单的重复。如果我在故事板中复制我的视图控制器,这是否意味着如果我想在将来改变视图的结构(我会这样做),那么我必须在三个地方做到这一点? – zkarj

+0

其实,我想我在这里找到了另一个问题的答案:http://stackoverflow.com/questions/14982721/how-to-connect-two-different-tab-bar-icons-to-same-view-controller- with-storyboa 感谢您的评论,因为它帮助我重述了我的问题以找到答案。 – zkarj

回答

0

根据我上面留下的评论,这里是我的解决方案。

  1. 通过拖动将现有视图控制器附加到标签栏控制器。
  2. 从选项卡控制器中删除任何默认添加的视图,只留下我的。
  3. 将选项卡控制器标记为初始视图。 (并取消标记我的原始文件)。
  4. 更改我的原始视图控制器,以应付标签栏占用的空间(在我的情况下,我不想在它下面有任何东西,因此我未勾选“底部条形图”。)
  5. 在我的代码,扔掉现有的单连视图,而是建立三个

里面的应用程序委托的didFinishLaunchingWithOptions方法...

// Add extra tabs 
UIViewController *vc1, *vc2, *vc3; 
vc1 = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"CBViewController"]; 
[vc1 setTabBarItem:[[UITabBarItem alloc] initWithTitle:@"Tab A" image:[UIImage imageNamed:@"tabA_unselected"] selectedImage:[UIImage imageNamed:@"tabA_selected"]]]; 
vc2 = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"CBViewController"]; 
[vc2 setTabBarItem:[[UITabBarItem alloc] initWithTitle:@"Tab B" image:[UIImage imageNamed:@"tabB_unselected"] selectedImage:[UIImage imageNamed:@"tabB_selected"]]]; 
vc3 = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"CBViewController"]; 
[vc3 setTabBarItem:[[UITabBarItem alloc] initWithTitle:@"Tab C" image:[UIImage imageNamed:@"tabC_unselected"] selectedImage:[UIImage imageNamed:@"tabC_selected"]]]; 
_tabController = (UITabBarController *)self.window.rootViewController; 
[_tabController setViewControllers:[NSArray arrayWithObjects:vc1, vc2, vc3, nil] animated:YES]; 
相关问题