2011-04-22 13 views
1

基本的に私が抱えている問題は、テーブルと呼ばれる別のビューからメインビューコントローラ(Recorder)でメソッドを呼び出すことができないことです。コントローラが閉じられたときに別のビューでメソッドを呼び出す方法

ユーザーがボタンをクリックすると、テーブルビューはレコーダーからModalviewコントローラー(presentmodalViewController)としてロードされます。テーブルビューを使用すると、ユーザーは設定1から設定2に変わり、完了ボタン(dismissmodalviewcontrollerを呼び出す)があり、メインビュー(レコーダー)に戻ります。

私がしたいのは、テーブルビューで完了したボタンをクリックするとレコーダーでメソッドを呼び出すことです。このメソッドはChangeviewと呼ばれ、設定が変更されます。私は現在、このメソッドを適切に呼び出すことができません。

私は現在のコードは次のとおり

changeView方法

- (void)changeView 
{ 

    [levelsView changeView]; 

} 

TableViewControllerインタフェースファイル

RecorderViewController*recorderViewController; 

@property (nonatomic, retain) RecorderViewController *recorderViewController; 

TableViewController実装ファイル

@synthesize recorderViewController; 

    - (void)viewWillDisappear:(BOOL)animated 
    { 
     [super viewWillDisappear:animated]; 
     [recorderViewController changeView]; 

    } 

完了ボタンが現在のコードは私にエラーを与えるものではありませんが、それはまた、設定を変更しない

- (IBAction) Switch: (id) sender { 

[self dismissModalViewControllerAnimated:YES]; 

} 

を押したときに呼び出されるメソッド。私はまた運がない通知を設定しようとしました。これについての洞察?

答えて

1

tableViewControllerを初期化するとき(つまり、RecorderクラスにtableViewController.recorderViewController = selfを設定していますか)、recorderViewControllerの値を設定していますか?もしそうでなければ、[recorderViewController changeView]への呼び出しはnilにメッセージを送ります。これはクラッシュしませんが、何もしません。

これ以外にも、TableViewControllerをRecorderViewControllerへの参照を渡すことは、2つのコントローラが通信するための最良の方法ではありません。NSNotificationCenterを使用するか、モデルオブジェクトを渡してKey-Value Observingを使用することを検討してください。

+0

こんにちはスコット、私はtableviewcontroller.recorderviewcontroller = selfを設定していませんでした。それは私の問題を解決しました。助けてくれてありがとう。キーバリュー観察も検討します。 – Nlks

関連する問題