2013-03-25 123 views
2

我有一个RootViewController,其中包含一个viewControllers数组,其中包括table,view和tabBar控制器......其中一些有nibs,有些没有,(我将几个应用程序+ web应用程序的功能过去),但他们都工作正常。我有一个项目,但是,它使用故事板。我看到很多问题都是从故事板实例化一个程序化视图,但是另一方面呢? 如何将故事板添加到我的编程实现的导航控制器?这可能吗?如果不是,下一个最好的解决方法是什么?感谢您的时间和考虑。RootViewController能否实例化故事板?

这里是下面的模型我的.h代码:

UIStoryboard *storyBoard; 
UIViewController *storyboardViewController; 

这里是我的.m代码打破在那里我有V形...

self.viewControllers = [NSMutableArray arrayWithCapacity:self.apps.count]; 

storyBoard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:nil]; 
>>>storyboardViewController = [storyBoard instantiateViewControllerWithIdentifier:@"myViewCont"]; 
[self.viewControllers addObject:storyboardViewController]; 
+1

这应该是可能的。当你说它打破了,你是什么意思?如果您收到错误,请发布。 – rdelmar 2013-03-25 21:25:13

+0

“(lldb)”是输出消息...没有错误,只是在那个时候打破。 – Morkrom 2013-03-25 21:29:32

+1

我没有看到你发布的内容有什么问题。 storyBoard和storyboardViewController如何声明? – rdelmar 2013-03-25 21:39:58

回答

2

好不是我一个傻瓜......

我做这三样东西:

改变:

storyboardViewController = [故事板instantiateViewControllerWithIdentifier: @ “myViewCont”];

storyboardViewController = [故事板instantiateViewControllerWithIdentifier:@ “iPhone”];

enter image description here

enter image description here

特别感谢评论者rdelmar,谁提到要检查这个答案的束部。

1

在故事板的2011 WWDC视频在会议结束时说明了这一点。

使用instantiateInitialViewController(或者,如果您想从故事板中间开始,请使用instantiateViewControllerWithIdentifier:)。

下面是加载故事板到标签栏控制器当前项目的样本:

browserStoryboard = [UIStoryboard storyboardWithName:@"ScheduleBrowse_iPhone" bundle:nil]; 
    resultVC = [browserStoryboard instantiateInitialViewController]; 
    UINavigationController *navigationController = (UINavigationController *)resultVC; 
    filterChooserVC = (FilterChooserViewController *)navigationController.topViewController; 
    filterChooserVC.managedObjectContext = self.managedObjectContext; 
    filterChooserVC.kindOfContent = sortMode; 
    filterChooserVC.filterGroup = filterGroup; 
    resultVC.tabBarItem.image = [UIImage imageNamed:@"first"]; 
    resultVC.title = filterGroup.text; 

返回resultVC。在调用例程中,创建一个以编程方式创建的视图控制器的数组。然后

self.tabBarController = [[[UITabBarController alloc] init] autorelease]; 
self.tabBarController.viewControllers = viewControllers; 
self.window.rootViewController = self.tabBarController;