当UITabBar不是rootViewController时,如何以编程方式将UITabBar与不同的ViewControllers与NIB链接

时间:2016-04-08 15:41:00

标签: ios objective-c cocoa uitabbar

我有一个tableViewController,一旦点击一个单元格就会带你到FirstViewController FirstViewController有一个带有4个项目的UITabBar。我想以编程方式将每个按钮/项挂钩到我的项目中已存在的viewController。

我做了很多研究,但没有找到解决这个问题的东西

到目前为止我所拥有的是FirstViewController, SecondViewController, ThirdViewController, FourthViewController

FirstViewController.xib中的

我有4个图标的TabBar。

FirstViewController.h

@property (strong, nonatomic) IBOutlet UITabBarController *tabBarController;
@property (weak, nonatomic) IBOutlet UITabBarItem *tabBar;
@property (weak, nonatomic) IBOutlet UITabBarItem *firstItem;
@property (weak, nonatomic) IBOutlet UITabBarItem *secondItem;
@property (weak, nonatomic) IBOutlet UITabBarItem *thirdItem;
@property (weak, nonatomic) IBOutlet UITabBarItem *fourthItem;

FirstViewController.m

- (void)viewDidLoad {
    FirstViewController *first = [[FirstViewController alloc] init];
    SecondViewController *second = [[SecondViewController alloc] init];
    ThirdViewController *third = [[ThirdViewController alloc] init];
    FourthViewController *fourth = [[FourthViewController alloc] init];

    self.tabBarController.viewControllers = [NSArray arrayWithObject: first, second, third, fourth, nil];

}

当我在第四个按钮上选中时,此代码不起作用,例如它没有显示fourthViewController笔尖

1 个答案:

答案 0 :(得分:1)

假设每个 UIViewController 子类都有一个关联的 .xib (nib),那么请使用指定的初始化器。

而不是[[FirstViewController alloc] init]而是为每个相应的视图控制器使用 initWithNibName:bundle:

示例 -

[[FirstViewController alloc] initWithNibName:@"nameOfNibFile" bundle:nil];