4

私の iPad アプリケーションでは、tabBarController を使用しています。次のコードを実行して、特定のタブを選択します。

[tabBarController setSelectedViewController:myNavigationController];

selectedViewController(クラスのプロパティを変更します。Apple ドキュメント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

Synchronizecontrollerに次のメソッドを追加してください。

- (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 に答える