首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >以编程方式使用UITabBarItem设置StoryBoards图标?

以编程方式使用UITabBarItem设置StoryBoards图标?
EN

Stack Overflow用户
提问于 2012-01-06 16:59:53
回答 4查看 14.3K关注 0票数 4

我想使用UITabBarSystemItem作为我的一个tabBarItem的图标,但我使用的是故事板。我不知道该把它放在哪里。如果我在视图的viewDidLoad中设置了它,那么它不会改变,直到您按下tabBar中的按钮。在那之前只有蓝色?方块。

据我所知,您不能在IB检查器中使用UITabBarSystemItems。

更新:

首先我是个白痴。您完全可以在IB检查器中选择图标。

选项卡栏项->标识符->选择您的图标。

但问题仍然是如何以编程的方式来实现它。或者更确切地说,何时/何地?

EN

回答 4

Stack Overflow用户

发布于 2012-09-24 02:32:15

当使用情节提要时,视图控制器使用initWithCoder构造函数初始化,这样您就可以覆盖该函数并在那里设置系统项图标,如下所示

代码语言:javascript
运行
复制
- (id)initWithCoder:(NSCoder*)aDecoder 
{
    if(self = [super initWithCoder:aDecoder]) 
    {
        self.tabBarItem = [[UITabBarItem alloc] initWithTabBarSystemItem:UITabBarSystemItemFavorites tag:1];
    }
    return self;
}

当然,您可以将系统项的值更改为所支持的任何值。苹果列出了他们的here

票数 11
EN

Stack Overflow用户

发布于 2012-01-06 18:37:08

检查下面的代码,看看你的问题:它在我的应用程序中工作。

代码语言:javascript
运行
复制
- (NSArray *) initializeViewControllers
{
    NSArray *viewControllerArray = nil;
    viewController1 = <View Init Code>
    viewController2 = <View Init Code>
    viewController3 = <View Init Code>

    1stNavController = [[UINavigationController alloc] initWithRootViewController:viewController1]; 
    UIImage *img = [UIImage imageNamed:@"tab_home"];
    [1stNavController .tabBarItem initWithTitle:@"Home" image:img tag:1];

    2ndNavController = [[UINavigationController alloc] initWithRootViewController:viewController2]; 
    img = [UIImage imageNamed:@"tab_timeDrop"];
    [2ndNavController .tabBarItem initWithTitle:@"Time Entry" image:img tag:2];

    3rdNavController = [[UINavigationController alloc] initWithRootViewController:viewController3];

    img = [UIImage imageNamed:@"tab_invoiceSummary"];
    [3rdNavController.tabBarItem initWithTitle:@"Invoice Summary" image:img tag:3];

    viewControllerArray = [NSArray arrayWithObjects:1stNavController,2ndEntryNavController,3rdReportNavController, nil];
    return viewControllerArray;
}

此代码将返回具有图像的视图控制器,用于各自的选项卡。在这里,我在选项卡控制器中使用了导航控制器。您还可以使用视图控制器而不是导航控制器。

只需添加此代码并初始化您的选项卡控制器,appdidfinishlaunching方法中如下所示:

代码语言:javascript
运行
复制
 tabbarController = [[UITabBarController alloc] init];

_tabbarController.viewControllers = [self initializeViewControllers];

self.window.rootViewController = tabbarController;

希望它能成功。

请回复。

票数 7
EN

Stack Overflow用户

发布于 2014-02-20 00:15:36

嗯,这很简单!

对于where ->,创建一个自定义TabBarController (例如WBTabBarController)。在您的StoryBoard中显式设置它。

对于->刚刚覆盖WBTabBarController的viewDidLoad并为TabBarItems设置图像的方式。在下面的示例中,这是使用NIKFontAwesomeIconFactory完成的:

代码语言:javascript
运行
复制
#import "WBTabBarController.h"
#import "NIKFontAwesomeIcon.h"
#import "NIKFontAwesomeIconFactory.h"
#import "NIKFontAwesomeIconFactory+iOS.h"

@interface WBTabBarController ()

@end

@implementation WBTabBarController


- (void)viewDidLoad
{
    [super viewDidLoad];

    NIKFontAwesomeIconFactory *factory = [NIKFontAwesomeIconFactory tabBarItemIconFactory];

    UITabBarItem *item0 = self.tabBar.items[0];
    item0.image = [factory createImageForIcon:NIKFontAwesomeIconApple];

    UITabBarItem *item1 = self.tabBar.items[1];
    item1.image = [factory createImageForIcon:NIKFontAwesomeIconStackOverflow];
}

@end
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8761468

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档