More标签页中图标消失问题

4
在我的iPad应用程序中,我使用了一个tabBarController。我运行以下代码来选择特定的选项卡:
[tabBarController setSelectedViewController:myNavigationController];

我修改了UITabBarController类的属性selectedViewController,请参见苹果文档

这个操作完美地运行;唯一的问题是,当用户使用左上角的按钮返回“更多…”屏幕时,先前选择的选项卡的图标会消失:

an icon is missing

当我手动导航时,没有问题。图标总是显示在“更多”屏幕中。仅在使用方法setSelectedViewController时才会出现问题。
选项卡栏项目创建如下:
newVC = [[SynchronizeViewController alloc] init];
newVC.tabBarItem = [[UITabBarItem alloc] 
    initWithTitle:NSLocalizedString(@"SYNCHRONIZE", @"synchronize tab label") 
    image:[UIImage imageNamed:@"02-redo.png"] tag:0];

有人遇到过相同的问题并找到了解决方法吗?提前感谢!


1
请发布您的setSelectedViewController方法。 - Balu
post the image file, please. - holex
1
所以在选择另一个控制器之前,图标在那里吗?选择后它就消失了吗?所有图标(所有控制器)都会出现这种情况吗? - Tricertops
@SuperChafouin,如果图标显示不正确,肯定是出了问题(例如格式、颜色或透明通道)。 - holex
@holex 但是这个图片确实有显示属性。请在写之前先阅读。这张图片会在特定的操作后消失。 - Tricertops
显示剩余8条评论
3个回答

2

请您在同步控制器中添加下一个方法:

- (void)viewDidDisappear:(BOOL)animated {
    [super viewDidDisappear:animated];
    AppDelegate* appDelegate = (AppDelegate*)[UIApplication sharedApplication].delegate;
    UITableView *view = (UITableView *)appDelegate.tabBarController.moreNavigationController.topViewController.view;
    [view reloadData];
}

是的,那个有效!我们需要刷新 moreNavigationController 表视图并显示图标。这似乎是 iOS 的一个 bug?非常感谢。 - Arnaud

1
问题在于,您正在自己创建UITabBarItem。从-tabBarItem的文档中可以看出:
第一次访问属性时,将创建UITabBarItem。
因此,您不需要创建它,只需执行以下操作即可:
newVC.tabBarItem.title = @"Your Title"; // Default is view controller's title.
newVC.tabBarItem.image = yourImage;

解释尝试:由于某种原因,UITabBarController决定内部重新创建所有选项卡栏项目,或者其他什么原因。你的实例丢失了,默认标题被使用。或者只是图像丢失了,谁知道呢。这被称为未定义行为


非常感谢您提供这个好主意,但是我已经尝试过了,图标仍然丢失。 - Arnaud
但是,请遵循这个答案以防止其他意外的错误。 - Tricertops

0

尝试从项目中删除该文件。进行一次干净的构建,然后使用不同的名称将其添加回项目中。


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