2012-04-04 45 views
2

我正在寻找使用storyboards提供的新功能重建我的应用程序的设置部分。此时不想触摸我的其他应用程序,因此我的主要NIB将停留。从Nib内部启动Storyboard?

现在从我NIB去当“主编tabBar另一个NIB我只是在IB添加viewControllertabBar,然后NIB Name属性设置为我要当按下此标签加载NIB

但是我没有看到'storyboard name'属性,那么这是如何完成的?

回答

3

目前没有“官方”的方式来做,但你可以用一些技巧来做到这一点。

1)以通常的方式将您的视图控制器添加到笔尖中的笔尖。将笔尖字段留空。

2)创建你的故事板并添加你的视图控制器。设置类,并设置(我将使用“theID”在这个例子中)

3)添加静态布尔VAR你.m文件,执行外或接口

static BOOL aFlag = NO; 

4)故事板ID在你的ViewController类重写此方法:

- (id) awakeAfterUsingCoder:(NSCoder *)aDecoder 
{ 
    if (!aFlag){ 
     aFlag = YES; 
     UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Storyboard" bundle:nil]; 
     return [storyboard instantiateViewControllerWithIdentifier:@"theID"]; 
    } else { 
     return self; 
    } 
} 

主要有:

  • 当你从标签栏笔尖加载对象,首先调用“initWithCoder”,并且在initWithCoder,awakeAfterUsingCoder被调用之后,对象加载时没有使用nib
  • ,并且在那里用另一个从storyboard加载的对象替换对象。当您从故事板加载对象时,另一个对initWithCoder和awakeAfterUsingCoder的调用会在故事板中归档,但存档在故事板中的同一类对象
  • 。您可以使用该标志,以避免一个循环,并返回self(在第二个电话,对象从情节串连图板加载,以便返回自己是确定)

我试着和它的作品好;-) 如果你想在这里一个示例项目:http://www.lombax.it/files/testTabNib.zip

+0

它的工作原理,但由于某种原因TabBarItem的图像已经消失......任何想法为什么? – Kof 2013-02-10 09:58:56

+1

选项卡栏项目(出现在选项卡栏上的按钮)是视图控制器的属性,而不是选项卡栏的属性。所以,你必须添加一个标签栏项目到故事板中的新ViewController。您可以通过编程或简单地以图形方式进行。从ViewController下的对象库中拖放一个新的Tab Bar Item(作为一个孩子) – LombaX 2013-02-10 10:21:24