我正在创建一个选项卡式应用程序,但我在显示选项卡时出现问题时遇到了一些麻烦。我已经将我的代码与我之前从事过的一个例子进行了比较,看起来很匹配,但新应用程序中的图标只显示为空白方块。我试图将所有相关的代码都包含在内,但是如果你想看到更多,只要问一下,我会根据需要进行更多编辑。我已经检查过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开发的新手,我将获得所有可以获得的帮助。
答案 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