4

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

[tabBarController setSelectedViewController:myNavigationController];

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

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

缺少一个图标

当我手动导航时,没有问题。图标始终在“更多”屏幕中可见。仅当我使用该方法时才会出现此问题setSelectedViewController

标签栏项目的创建如下:

newVC = [[SynchronizeViewController alloc] init];
newVC.tabBarItem = [[UITabBarItem alloc] 
    initWithTitle:NSLocalizedString(@"SYNCHRONIZE", @"synchronize tab label") 
    image:[UIImage imageNamed:@"02-redo.png"] tag:0];

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

4

3 回答 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];
}
于 2013-02-13T18:38:24.003 回答
1

问题是,你是在创造 UITabBarItem自己。来自以下文档-tabBarItem

首次访问该属性时,将UITabBarItem创建 。

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

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

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

于 2013-02-13T12:10:18.537 回答
0

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

于 2013-02-11T09:33:37.370 回答