私は2つのタブを持つプロジェクトに取り組んでいます。最初のビュー コントローラーで、2 番目のビュー コントローラーにあるメソッドを呼び出そうとしています。Second View Controller のメソッドは、この Second View Controller の UILabel を更新します。問題は、Second View Controller が起動時に初期化されないため、メソッドが適切に呼び出されないことです。次を使用して、2番目のView Controllerを手動で初期化できます
if (secondView==nil) {
secondView = [[SecondView alloc]init];
}
次に、メソッドが起動されます(メソッドにブレークポイントを配置してテストし、それがトリガーされることを確認しました)が、UILabel が更新されないため、2 番目のビュー コントローラーが別のスレッドで初期化されていると思われます。
私の質問は、同じスレッドで Second View コントローラーを初期化して、そのタブをクリックしたときに UI が更新されるようにするにはどうすればよいですか? appDelegate でこれを行う方法はありますか?
IBOutlet がラベルに正しく接続されていること、.h ファイルが正しくインポートされていること、SecondViewController のメソッドが .H ファイルに記述されていることを確認しました。
コードを以下に示します。
FirstViewController.m
-(void)myMethod
{
[secondView updateLabel];
}
SecondViewController.m
-(void)updateLabel
{
myLabel.text = myString;
}