UITabBar选项卡项目未显示故事板引用

34

我想在选项卡中使用新的Storyboard引用。当我使用Storyboard引用时,自定义图像和文本设置的UITabBarItem没有显示任何内容。请参见设置:

故事板设置

选项卡项设置

我通过在引用的故事板中的初始视图控制器的initWithCoder函数中设置图像和标题来解决了这个问题,如下所示:

static NSString *const ContactsViewControllerTabContactImageName = @"tab-contact";
static NSString *const ContactsViewControllerTabContactActiveImageName = @"tab-contact-active";

- (instancetype)initWithCoder:(NSCoder *)aDecoder {
    self = [super initWithCoder:aDecoder];
    if (self) {
        self.title = NSLocalizedString(@"Contacts", nil);
        self.tabBarItem.image = [UIImage imageNamed:ContactsViewControllerTabContactImageName];
        self.tabBarItem.selectedImage = [UIImage imageNamed:ContactsViewControllerTabContactActiveImageName];
    }
    return self;
}

2
截至Xcode 8.3.x,这仍然是观察到的行为。 我认为这是一个bug,因为我相信_storyboard reference_实际上是为了提供TabBar项而设计的。 目前似乎,@leogdion所描述的解决方法是最可行的方式。 - CouchDeveloper
@CouchDeveloper,你(或其他人)在Xcode 9中测试过这个吗?对我来说,它绝对像是一个bug。应该可以使用引用来设置这个。 - User
4个回答

105

您需要在目标故事板视图控制器中添加选项卡栏项目。

目标故事板的界面构建器视图


2
这是解决此问题的正确方法。感谢您的答案。 - Scott D
1
就像UINavigationItems一样(有时候)。感谢您的回答。 - VaporwareWolf
5
这个方法可行 - 更明确地说,您需要从对象库中将一个选项卡栏项目拖动到视图控制器上。 - vikzilla
3
选项卡项目正在显示,但我仍然无法通过编程进行修改。 - codiction

6
这个回答可能有点晚,但我也曾遇到过相似的问题。以下内容对于那些稍晚看到这篇文章的读者或许有所帮助。
在使用UISplitViewController时,我在Storyboard中添加了一个项目,但出现了一些问题。这个问题可以通过一个变通方法来解决。
场景描述:
UITabBarController -> StoryboardReference -> UISplitViewController 问题:
无法给UISplitViewController添加一个UITabBarItem
解决方案/变通方法:
在UISplitViewController的Storyboard中添加一个UITabBarController,并将UISplitViewController分配为其中一个选项卡。这样一个UITabBarItem就会被添加到UISplitViewController中。您可以删除不必要的UITabBarController,保留UITabBarItem。

感谢您提供这些信息,不过您的问题可能也源于以下事实:“分割视图控制器通常安装在应用程序窗口的根目录下”,正如官方文档中所述。 - CouchDeveloper


-3

您可以像这样获取故事板引用

UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle: nil];


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接