在我的iPad应用程序中,我使用tabBarController。我运行以下代码以选择特定选项卡:
[tabBarController setSelectedViewController:myNavigationController];
(我修改了课程selectedViewController
的属性UITabBarController
,请参阅apple docs)
这完美无缺;唯一的问题是,当用户使用左上角按钮导航回“更多...”屏幕时,先前所选标签的图标丢失:
当我手动导航时,没有问题。图标始终显示在“更多”屏幕中。只有在我使用方法setSelectedViewController
时才会出现此问题。
标签栏项目按如下方式创建:
newVC = [[SynchronizeViewController alloc] init];
newVC.tabBarItem = [[UITabBarItem alloc]
initWithTitle:NSLocalizedString(@"SYNCHRONIZE", @"synchronize tab label")
image:[UIImage imageNamed:@"02-redo.png"] tag:0];
有人遇到同样的问题并找到了解决此问题的方法吗?提前谢谢!
答案 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)
尝试从项目中删除该文件。获得一个干净的构建,并使用不同的名称将其添加回项目。