使用故事板视图控制器创建程序化选项卡栏?

时间:2011-11-13 17:40:09

标签: iphone objective-c ios ios5

我有一个以编程方式创建的标签栏,我在初始化与视图关联的故事板时遇到了困难。

我可以在没有故事板的标签栏中成功加载视图(参见下面的代码),但视图只是部分显示,因为一些UI组件在故事板中。

我的故事板的名称是MainStoryboard,我将故事板视图标识符设置为SettingsViewController。

如何在下面的代码中初始化SettingsViewController的故事板?

- (void)createTabBarItems {
    tabBarController = [[UITabBarController alloc] init];

    settingsViewController  = [[SettingsViewController alloc] init];


    UINavigationController *sett = [[[UINavigationController alloc]
                                     initWithRootViewController: settingsViewController] autorelease];

    [sett.tabBarItem setTitle:@"Settings"];
    [sett.tabBarItem setImage:[UIImage imageNamed:@"settings.png"]];

    [tabBarController setViewControllers:
        [NSArray arrayWithObjects:sett, sett, sett, sett, nil]]; 
}

2 个答案:

答案 0 :(得分:18)

如果要在故事板中初始化视图控制器,则必须使用故事板方法,而不是直接分配视图控制器:

// load the storyboard by name
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];

// either one of the two, depending on if your view controller is the initial one
settingsViewController = [storyboard instantiateInitialViewController];
settingsViewController = [storyboard instantiateViewControllerWithIdentifier:@"SettingsViewController"];

答案 1 :(得分:0)

Swift 4

let storyboard = UIStoryboard(name: "Main", bundle: nil)
settingsViewController = storyboard.instantiateInitialViewController()
settingsViewController = storyboard.instantiateViewController(withIdentifier: "SettingsViewController")