0

クレイジーなことをしている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

4

2 に答える 2

0

ナビゲーション コントローラーをルート ビュー コントローラーとして追加してみてください。

tabNavController = [[MainTabViewController alloc] initWithNibName:nil bundle:nil];
    UINavigationController *navCtrl = [[UINavigationController alloc] initWithRootViewController:tabNavController];
    self.window.rootViewController = navCtrl;
    [self.window makeKeyAndVisible];
于 2013-03-14T22:11:19.123 に答える
0

MainTabViewController の viewDidLoad メソッドでモーダル ウィンドウを起動していたことがわかりました。これがどういうわけかシステムを混乱させ、問題の根源でした。

于 2013-03-25T17:43:47.410 に答える