この質問は非常に頻繁に寄せられますが、利用可能な回答がなくても解決できません。
私はiOS 5.1で作業しています。私のナビゲーション コントローラーは、タブ バー ビュー コントローラーの 1 つのタブです。行を選択すると新しいView Controllerがプッシュされるテーブルビューがあります。
この問題は、2 番目の行を選択したときにのみ発生し、ときどき発生します。定期的ではありません。プッシュされたビューは空白になります - viewWillAppear
/viewDidAppear
は呼び出されていません。ナビゲーション バーの戻るボタンをクリックすると、ルート ビューのviewWillAppear
/viewDidAppear
も呼び出されず、空白になります。
まったく同じ方法で、最初の行/2番目の行を選択してビューをプッシュしています。しかし、問題は 2 番目の行でのみ発生します。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
switch (indexPath.row) {
case 0:
AViewController *aObj = [[AViewController alloc] init];
aObj.homeObj = self;
[self.navigationController pushViewController:aObj animated:YES];
[aObj release];
break;
case 1:
BViewController *bVCObj = [[BViewController alloc] init];
bVCObj.homeObj = self;
[self.navigationController pushViewController:bVCObj animated:YES];
[bVCObj release];
break;
default:
break;
}
[tableView deselectRowAtIndexPath:indexPath animated:YES];
}
viewDidLoad
を押すと が呼び出されていますが、BViewController
は呼び出されていません。以下は私のものです:viewWillAppear
viewDidAppear
viewDidLoad
- (void)viewDidLoad { [super viewDidLoad]; self.view.backgroundColor = [UIColor blackColor]; NSLog(@"nav stack: %@", [self.navigationController viewControllers]); NSLog(@"nav stack: %@", [[self.navigationController visibleViewController] description]); //some initialization and call of methods }
定期的ではありません。時々、このシナリオが発生します。これは、アプリをバックグラウンドから閉じて再起動するまで続きます。しかし、時々それはうまくいきます。View Controllerをnabスタックにプッシュしているだけです。
コメントで述べたように、タブバーコントローラーの通常のナビゲーションコントローラーです。