图标在“更多”选项卡中消失

时间:2013-02-05 04:56:11

标签: ios objective-c uitabbarcontroller uitabbar

在我的iPad应用程序中,我使用tabBarController。我运行以下代码以选择特定选项卡:

[tabBarController setSelectedViewController:myNavigationController];

(我修改了课程selectedViewController的属性UITabBarController,请参阅apple docs

这完美无缺;唯一的问题是,当用户使用左上角按钮导航回“更多...”屏幕时,先前所选标签的图标丢失:

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];

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

3 个答案:

答案 0 :(得分:2)

您能否为Synchronize controller添加下一个方法:

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

答案 1 :(得分:1)

问题是,您自己正在创建 UITabBarItem。来自-tabBarItem的文档:

  

第一次访问该属性时,会创建UITabBarItem

所以你不需要创建它,只需这样做:

newVC.tabBarItem.title = @"Your Title"; // Default is view controller's title.
newVC.tabBarItem.image = yourImage;

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

答案 2 :(得分:0)

尝试从项目中删除该文件。获得一个干净的构建,并使用不同的名称将其添加回项目。