これはコードです:EXC_BAD_ACCESS
UITabBarController *tbc = [[UITabBarController alloc]init];
tbc.viewControllers = [NSArray arrayWithObjects:ptlc,cvc,gvc,nil];
[self.navigationController pushViewController:tbc animated:YES];
[tbc release];
これはのtableViewのコードの最後の部分である:didSelectRowAtIndexPath :. UITabarControllerがうまく行を選択すると、UINavigationControllerの "戻る"ボタンを押すと、1秒後にプログラムがクラッシュし、コンソールに説明が印刷されません。デバッガは私に "スレッド1:プログラム受信信号:" EXC_BAD_ACCESS "この行には:
int retVal = UIApplicationMain(argc, argv, nil, nil);
「main.m」にあります。信じられないことに、最後の行を削除すると問題が解決します。 ptlc cvcとgvcは私が最初にインクルードするコントローラで、このコードサンプルの最後の行の後にリリースします。
UITabBarControllerは確かにUINavigationControllerの内部で使用することができます。私はそれが何度もやったのを見た。私が知っていることは、他の方法(タブバー内でのナビゲーション)はできないということです。 – bluehallu
@Hallucynogenyc ['here']から引用(http://developer.apple.com/library/ios/featuredarticles/ViewControllerPGforiPhoneOS/TabBarControllers/TabBarControllers.html#//apple_ref/doc/uid/TP40007457-CH102-SW2): 「ナビゲーションコントローラをタブ内に埋め込むことはできますが、その逆は真ではありません。ナビゲーションインターフェイス内からタブバーのインターフェイスを提示することは、潜在的にユーザーにとって混乱を招く可能性があります。ナビゲーションスタックのタブバーはお勧めしません。 –
私は上記で説明した通り、Deepakは正しいです。これは不正なアクセスの問題であるため、NSZombieをオンにして問題の発生場所を確認することをお勧めします。 –