我有一个旧项目,它的视图实现为xibs。视图是带有tabbar的控制器。
现在我想添加一个新的UITabBarItem,但我希望这个新项目不是基于xib的,而是基于Storyboard。这意味着,我想仅使用一个故事板来获取此tabbar项目的内容,并保留应用程序的其余部分。
我做了以下事情:
但我现在该怎么办?我试过这个让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;
}
但它不起作用(崩溃了......)。
问:这是正确的方法吗?这样做有最好的做法吗?提前致谢
答案 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;
}
像这样分配故事板标识符 - >
并取消选中初始视图控制器 - >
输出ll就像这样..