クレイジーなことをしているiOSアプリを持っています...私はそれを説明するために最善を尽くします.
私のナビゲーションアーキテクチャは次のとおりです。
AppDelegate はこれを呼び出します。
tabNavController = [[MainTabViewController alloc] initWithNibName:nil bundle:nil];
self.window.rootViewController = tabNavController;
[self.window makeKeyAndVisible];
MainTabViewController はから継承しますUITabBarController
MainTabViewController の viewDidLoad 内で、プログラムによってタブを NSMutableArray にロードし、それを tabControllers に割り当てます。
NSMutableArray *tabs;
StreamViewController *controller = [StreamViewController alloc] initWithNib...];
UINavigationController *navCon = [UINavigationController alloc] initWithRootViewController:controller];
[tabs addObject:navContorller];
...
self.viewControllers = tabs;
私の最初のタブ (デフォルトで表示されるタブ) は、UIViewController を継承しています。メイン ビューとして XIB に UITableView をセットアップしました。私のクラスは UITableViewDelegate と UITableViewDataSource です。
StreamViewController : BaseModuleViewController <UITableViewDelegate, UITableViewDataSource>
テーブルが読み込まれ、正常に表示されます。ユーザーが行をクリックすると、新しいビュー コントローラーがスタックにプッシュされます。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
...
DetailViewController* detailController = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:[NSBundle mainBundle]];
[self.navigationController pushViewController:detailController animated:YES];
...
}
ここが奇妙になるところです。ビュー コントローラーは表示されるように動作しますが、表示されません。navigationBar のアニメーションが表示されます。ボタンが移動し、タイトルが変わり、[戻る] ボタンが表示されますが、ビュー自体は表示されません。テーブル ビューのセルをクリックし続けて、さらに多くのビューを継続的に読み込むこともできます。新しいビューごとにナビゲーション バーがアニメーション化し、新しい [戻る] ボタンが表示されます。その後、X 回ヒットバックして、StreamViewController に「戻る」ことができます。
これが次のキッカーです。タブ #2 に移動してからタブ #1 に戻ると、上記のいずれも発生せず、ビューは本来のとおりに表示されます。
奇妙な - 誰かこれを見て、何が起こっているのか知っている人はいますか?
編集
動作していないことを示す YouTube ビデオは次のとおりです: http://youtu.be/Shces88d6Go