2011-12-05 15 views
-1

私はUITabBarで2 UIViewControllersを持っていると私のUIViewControllersの1のためのファサードを作成したい、とこれを実行しようとしたときの問題に実行しています:Objective-Cは、別のUIViewControllerからメソッドを呼び出します。

//within the 2nd view controller, that has not been displayed yet: 
-(void)startApp 
{ 
    locationManager.delegate = self; 
    [locationManager startUpdatingLocation]; 

} 

私は

//within the first view controller: 

[delegate startApp] 
をしようとしています

上記の例で「自己」とは何を指していますか?ブレークポイントを設定すると、2番目のビューコントローラ内のコールバックが呼び出されるのがわかりますが、2番目のビューコントローラから直接呼び出すときと同じ効果はありません。

2番目のView Controller内のViewDidLoadは、そのコントローラをタップするまで呼び出されませんが、その場合でも、startAppメソッドを呼び出しても結果は予期しないものです。

私はセットアップでMVCモデルを壊してしまい、コードの一部を取り出して、両方のコントローラが使用するモデルを作成する必要がありますが、私は迅速で汚れたソリューションを望んでいました。

ありがとうございます。

答えて

2

startAppは「2番目のView Controller」のインスタンスメソッドであるため、「self」はこのメッセージを受け取った「2番目のView Controller」の特定のインスタンスを参照します。

+0

ありがとうございました!私が遭遇した問題はUIViewControllerが初期化されていることですが、ユーザーはそのタブを一度も選択していないため、-viewDidLoadは一度も呼び出されていません。 –