我完全修改了我的答案并创建了一个示例项目,以帮助确保我第二次不会错过任何东西。
您应该能够在 TBViewController 的故事板子类中创建所有视图控制器(带有标识符)。这可以通过单击您的 UIViewController、转到身份检查器(cmd alt 3)然后输入“TBViewController”来完成。如果一切正常,它应该自动完成。下一步是为标签控制器创建标签。每个选项卡需要 3 个值才能添加到 TBTabBar 控制器。
- 正常图像
- 突出显示的图像
- 与按钮关联的视图控制器
下面是我创建的一个自定义方法,用于帮助实例化这些接受所有三个要求作为参数的 TBTabButton 对象:
-(TBTabButton*)TBTabButtonWithStoryBoardID:(NSString*)identifier andButtonImageNamed:(NSString*)normalImageTitle andHighlightedImageNamed:(NSString*)highlightImageTitle{
//Create the tab bar and assign normal image
TBTabButton *tabBarButtonItem = [[TBTabButton alloc] initWithIcon:[UIImage imageNamed:normalImageTitle]];
//Assign Highlighted image
tabBarButtonItem.highlightedIcon = [UIImage imageNamed:highlightImageTitle];
//Fetch the subclassed view controller from storyboard and assign as viewController
tabBarButtonItem.viewController = [self TBViewControllerFromStoryboardWithIdentifier:identifier];
return tabBarButtonItem;
}
可以使用下一个代码块中的方法从情节提要中检索视图控制器。
-(TBViewController*)TBViewControllerFromStoryboardWithIdentifier:(NSString*)identifier{
//instantiateViewControllerWithIdentifier returns a UIViewController Object
UIViewController *viewController = [self.storyboard instantiateViewControllerWithIdentifier:identifier];
//check if UIViewController is a subclassed TBViewController
if([viewController isKindOfClass:[TBViewController class]]){
//if it is then send it back as the correct type
return (TBViewController*)viewController;
}
return nil;
}
现在你有一个方法可以为你创建“准备添加”的 TBTabButton 对象。使用此方法为您的标签栏创建每个所需的按钮。一旦你实例化了这些,你必须将它们添加到一个 NSArray 中,以便它可以作为创建 TBTabBar 对象的参数传递。剩下的就是将 UITabBar 对象添加到视图并将其设置为基于默认值显示。
-(void)setTBTabBar{
//Instantiate your tab TBTabButtons
TBTabButton *tab1 = [self TBTabButtonWithStoryBoardID:@"tab1"
andButtonImageNamed:@"favoritesIcon.png"
andHighlightedImageNamed:@"favoritesIconHighlighted.png"];
TBTabButton *tab2 = [self TBTabButtonWithStoryBoardID:@"tab2"
andButtonImageNamed:@"mentionsIcon.png"
andHighlightedImageNamed:@"mentionsIconHighlighted.png"];
TBTabButton *tab3 = [self TBTabButtonWithStoryBoardID:@"tab3"
andButtonImageNamed:@"messagesIcon.png"
andHighlightedImageNamed:@"messagesIconHighlighted.png"];
//Add them to an array
NSArray *arrayOfTBViewControllers = [NSArray arrayWithObjects: tab1, tab2, tab3, nil];
//Instantiate your TBTabBar object with your array of TabButtons. Set this view as delegate
tabBar = [[TBTabBar alloc] initWithItems:arrayOfTBViewControllers];
tabBar.delegate = self;
//Add it to the view and set it to show defaults
[self.view addSubview:tabBar];
[tabBar showDefaults];
}
此方法必须在您的 -(void)viewDidLoad 方法中调用;
只有其他需要做的事情是:
- 在 _prefix.pch 文件中定义 SELECTED_VIEW_CONTROLLER_TAG 98456345
- 通过在编译源下添加“-fno-objc-arc”标志来关闭导入文件的 ARC
希望这可以解决您遇到的任何问题。这似乎是一件可能有点令人困惑的事情。只要您正确遵循自述文件中的其他步骤,我相信这对您来说应该很有效。
如果这不起作用,请告诉我,我可以尝试发布一个链接,指向我为上面的代码制作的工作示例。