我找到了一个我想使用的标签栏库,但需要在我的应用程序中使用故事板。
一旦看到这个库与xibs一起工作,我就会自己调整它以适应我的故事板应用程序。但是,我无法使其发挥作用。
可在此处找到该库:http://www.cocoacontrols.com/controls/tbtabbar
那么我如何调整库以使其与故事板一起使用,如果无法完成,我如何在主窗口内使用uinavigationcontroller,因为我无法使用它。< / p>
由于
编辑:这是交换视图控制器的代码:
-(void)switchViewController:(UIViewController *)viewController {
UIView *currentView = [self.view viewWithTag:SELECTED_VIEW_CONTROLLER_TAG];
[currentView removeFromSuperview];
viewController.view.frame = CGRectMake(0,0,self.view.bounds.size.width, self.view.bounds.size.height-(tabBar.frame.size.height));
viewController.view.tag = SELECTED_VIEW_CONTROLLER_TAG;
[self.view insertSubview:viewController.view belowSubview:tabBar];
}
答案 0 :(得分:1)
我完全重写了我的答案并创建了一个示例项目,以确保我第二次没有错过任何内容。
您应该能够在TBViewController的storyboard子类中创建所有视图控制器(带有标识符)。这可以通过单击您的UIViewController,转到身份检查器(cmd alt 3)然后键入“TBViewController”来完成。如果一切正常,它应该自动完成。下一步是为选项卡控制器创建选项卡。每个选项卡在添加到TBTabBar控制器之前需要3个值。
下面是我创建的一个自定义方法,用于帮助实例化这些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方法中调用此方法;
只有其他需要做的事情是:
希望这可以解决您遇到的任何问题。这似乎是一件可能有点令人困惑的事情。只要你正确地遵循README中的其他步骤,我相信这对你来说应该是花花公子。
如果这不起作用,请告诉我,我可以尝试发布我为上面的代码所做的工作示例的链接。