XCode选项卡式应用程序不会加载图标

时间:2012-07-26 16:05:34

标签: objective-c ios cocoa-touch

我正在创建一个选项卡式应用程序,但我在显示选项卡时出现问题时遇到了一些麻烦。我已经将我的代码与我之前从事过的一个例子进行了比较,看起来很匹配,但新应用程序中的图标只显示为空白方块。我试图将所有相关的代码都包含在内,但是如果你想看到更多,只要问一下,我会根据需要进行更多编辑。我已经检查过imageNamed的字符串是相同的:字符串和图标名称。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    ... // initializers for ViewControllers 1-3, which are custom viewControllers
        // that have the tab properties set in (void)viewDidLoad
    globalUINavigationController = [[UINavigationController alloc] initWithNibName:
                                @"DemoTabbedFourthViewController" bundle:nil];
    globalUINavigationController.title = NSLocalizedString(@"Fourth", @"Fourth");
    globalUINavigationController.tabBarItem.image = [UIImage imageNamed:@"fourth.png"];

    UIViewController *viewController4 = [[DemoTabbedFourthViewController alloc] 
                    initWithNibName:@"DemoTabbedFourthViewController" bundle:nil];

    [globalUINavigationController pushViewController:viewController4 animated:YES];
    self.tabBarController = [[UITabBarController alloc] init];
    self.tabBarController.viewControllers = [NSArray arrayWithObjects:viewController1, viewController2,
                                         viewController3, globalUINavigationController, nil];
    self.window.rootViewController = self.tabBarController;
    [self.window makeKeyAndVisible];
}

我正在使用globalUINavigationController作为我的例子,因为如果我可以让那个工作,我应该能够让其他工作基于它。如果您对代码有任何问题或意见,请告诉我。我是Objective C和iPhone App开发的新手,我将获得所有可以获得的帮助。

2 个答案:

答案 0 :(得分:0)

这是因为图像太大,或者图标是正方形。我的意思是,XCode只会抓住你的图像作为掩码(意味着颜色无关紧要)。它必须是PNG图像,大小约为30x30。从课堂参考;

  

图像   该项目的图像。如果为nil,则不显示图像。   标签栏上显示的图像来自此图像。如果此图像太大而无法放在标签栏上,则会将其剪裁以适合。标签栏图像的大小通常为30 x 30点。源图像中的alpha值用于创建未选择和选定的图像 - 忽略不透明值。

答案 1 :(得分:0)

我认为问题在于您使用nib文件初始化UINavigationController。我其实从未尝试过这个。您应首先初始化ViewController,然后在其init消息中将其添加到NavigationController。此外,您必须在内容视图控制器上设置标题,而不是在导航控制器上,因为导航控制器会向topViewController询问它应显示的标题。

我没有编译下面的代码,所以可能会有一些丢失的逗号或类似的东西,但它应该让你知道我的意思。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    ... // initializers for ViewControllers 1-3, which are custom viewControllers
        // that have the tab properties set in (void)viewDidLoad
    UIViewController *viewController4 = [[DemoTabbedFourthViewController alloc] 
                initWithNibName:@"DemoTabbedFourthViewController" bundle:nil];

    globalUINavigationController = [[UINavigationController alloc] initWithRootViewController:viewController4];
    globalUINavigationController.tabBarItem.image = [UIImage imageNamed:@"fourth.png"];

    [globalUINavigationController pushViewController:viewController4 animated:YES];
    self.tabBarController = [[UITabBarController alloc] init];
    self.tabBarController.viewControllers = [NSArray arrayWithObjects:viewController1, viewController2,
                                     viewController3, globalUINavigationController, nil];
    self.window.rootViewController = self.tabBarController;
    [self.window makeKeyAndVisible];
}

如果这不能解决问题,可能是因为您的图标文件是常规图像。只是图像的Alpha通道用于标签栏项目。

//编辑:在这种情况下,请看一下这个问题:UITabBarItem images just appear as a grey block