将Storyboard实例化为TabBarItem

时间:2013-08-22 12:22:42

标签: iphone ios uiviewcontroller uitabbar uistoryboard

我有一个旧项目,它的视图实现为xibs。视图是带有tabbar的控制器。

现在我想添加一个新的UITabBarItem,但我希望这个新项目不是基于xib的,而是基于Storyboard。这意味着,我想仅使用一个故事板来获取此tabbar项目的内容,并保留应用程序的其余部分。

我做了以下事情:

  • 创建了新的故事板
  • 创建了一个新的ViewController,它应该是故事板的包装器
  • 然后我将Tab中IB的底层VC更改为新VC

但我现在该怎么办?我试过这个让InitialViewController成为Tab的ViewCOntroller:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self)
{
    UIStoryboard *financeStoryboard = [UIStoryboard storyboardWithName:@"WS_Finanzierung_Storyboard_iPhone" bundle:nil];
    UIViewController * initialViewController = [financeStoryboard instantiateInitialViewController];

    [self presentViewController:initialViewController animated:YES completion:nil];
}
return self;
}

但它不起作用(崩溃了......)。

问:这是正确的方法吗?这样做有最好的做法吗?

提前致谢

1 个答案:

答案 0 :(得分:3)

试试这个..

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.
    UIViewController *viewController1 = [[FirstViewController alloc] initWithNibName:@"FirstViewController" bundle:nil];
    UIViewController *viewController2 = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];
    UIViewController *viewController3 = [[StoryViewController alloc] init];
    UIStoryboard *tableViewStoryboard = [UIStoryboard storyboardWithName:@"Storyboard" bundle:nil];
    viewController3 = [tableViewStoryboard instantiateViewControllerWithIdentifier:@"newTab"];
    self.tabBarController = [[UITabBarController alloc] init];
    self.tabBarController.viewControllers = @[viewController1, viewController2, viewController3];
    self.window.rootViewController = self.tabBarController;
    [self.window makeKeyAndVisible];
    return YES;
}

像这样分配故事板标识符 - > enter image description here

并取消选中初始视图控制器 - > enter image description here

输出ll就像这样..

enter image description here enter image description here