2011-06-17 11 views
0

私はタブバー+ナビゲーションベースのアプリケーションを持っています。主UIViewControllerの右側のナビゲーションボタンから2つのビューを連続して起動したいと思います。私は、このようなナビゲーションスキームを構造化して格納する正しい方法を考え出すのに問題があります。UIImagePickerControllerでUINavigationの階層を修正しました

私が表示する必要がある最初のビュー/コントローラは、UIImagePickerControllerです。これはモーダルとして表示する必要があります。それをUINavigationControllerにプッシュしようとすると、例外が発生します。ピッカーが終了するとすぐに、子のUIViewControllerを表示したいと思います。この子コントローラが終了すると、メインUIViewControllerのタブが表示されます。ここで

は、私はそれが今で構成されている方法は次のとおりです。

Tab Bar 
    -> (tab 1) UINavigationController -> UIViewController (main content for tab 1) 
    -> (tab 2) UINavigationController -> UIViewController (main content for tab 2) 

MainContent1Controller: 

- (void)onNavigationItemTapped { 

    // Launch the picker to take pictures 
    UIImagePickerController *picker = [[UIImagePickerController alloc] init]; 

    // configure picker options including: 
    picker.delegate = self; 

    [self presentModalViewController:picker animated:YES]; 
    [picker release]; 
} 

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info 
{ 
    // Process the photo taken 

    // unlink this view controller as the delegate 
    picker.delegate = nil; 

    // Dismiss the UIImagePickerController 
    [self dismissModalViewControllerAnimated:YES];       

    // Create the 2nd controller and show - this doesn't work and the child controller is not visible for some reason 
    ChildController *child = [[ChildController alloc] initWithNibName:...]; 
    [self presentModalViewController:child animated:YES]; 
    [child release]; 
} 

任意の提案ですか?あなたはおそらくこれを行う必要があります

答えて

0

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info 
{ 
    // Process the photo taken 

    // unlink this view controller as the delegate 
    picker.delegate = nil; 

    // Create the 2nd controller and show - this doesn't work and the child controller is not visible for some reason 
    ChildController *child = [[ChildController alloc] initWithNibName:nil bundle:nil]; 
    [self.navigationController pushViewController:child animated:NO]; 
    [child release]; 

    // Dismiss the UIImagePickerController 
    [self dismissModalViewControllerAnimated:YES];       
} 

この方法は、あなたは、ナビゲーション階層にchildを追加し、イメージピッカーを閉じます。 1つのアニメーションで、画像ピッカーが消されてコントローラchildが表示されます。

関連する問題