2012-05-08 9 views
0

私は、アプリケーションの起動時に表示されるメインビューコントローラを持っています。キャプチャー。私はUIimagepickerコントローラを備えたモデルビューコントローラを提示し、画像をアップロードした後、モデルを却下し、メインビューコントローラの(UIimagepicker)メソッドを呼び出す必要があります。 .hファイルモデルビューを閉じるときに、提示されたモーダルビューコントローラからrootviewcontrollerのメソッドを呼び出す方法

ViewController *viewController; 
@property (retain) ViewController *viewController; 

.mファイルのViewController .Mで

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex 
{ 

    if(buttonIndex == 0) 
    { 

     [self dismissModalViewControllerAnimated:YES]; 
     [viewController btnTap]; 

     NSLog(@"uploaded"); 
    } 
    else{ 
     [self dismissModalViewControllerAnimated:YES]; 
    } 

} 

-(void)btnTap{ 

     [self.actForImage showFromTabBar:tabBarController.tabBar]; 
     // act for image is the action sheet 
     // this method will be called when click on the center button of tabbar 
} 

私はブレークポイントを保持し、 - (void)btnTapメソッドが呼び出されていないことを確認しました。 メインビューコントローラのメソッドを呼び出す方法は他にありません。

答えて

1

代表者が答えです!

あなたがしなければならないことは、ModalViewControllerにプロトコルをセットアップすることです。 modalViewControllerで直接Dismissingするのではなく、デリゲートメソッドでそれを閉じる必要があります。

は、この答えをチェックアウト:

Can't dismiss modal view when tap a button

これは、デリゲートクラスでmodalviewcontrollerを却下する方法です。 ViewControllerクラスでそれを却下したら、好きなメソッドを呼び出すことができます。

編集: より広範な回答がコメントに書かれています。

+0

私は解決策を試しましたが、それは私のためには機能しません。私は提示されたmodelVCのナビゲーションも使用しています。私は[self dismissModalViewControllerAnimated:YES]をしているという最後の画面でそのビューを却下したい。しかし、私はあなたの答えによると、モデルのVCからデリゲートを呼び出すことができると思います – krishna

+0

まあ、ModalVCを呼び出すVCは、デリゲートを整理する単一のクラスを呼び出すことができ、その単一のクラスは、その上に。あなたが移動するたびにModalVC内のコントローラクラスにメッセージを送信し、完了したら直接コントローラを送信して、ModalVCを呼び出したViewControllerに代理人を処理させます。私が何を意味するのか分かっているなら.. –

+0

これは、ModalVCを呼び出したVCクラスがあることを意味します。 ModalVC内にナビゲーションを配置するControllerクラスがあります。 Controllerクラスから作成された複数のビューがあり、完了したらコントローラにメッセージを送信して、次に必要な次のビューを作成します。あなたがあなたのModalVCの最後の画面にいるとき(または、あなたがあなたのmodalVCを却下したいとき)、コントローラクラスにメッセージを送り、上記の方法でModalVCを却下するように指示します。 –

関連する問題