両方が異なるクラスのuiviewコントローラーにある場合にボタンクリックでラベルを更新する方法...ボタンをクリックすると、ラベルを更新する必要があります...何度も試しましたが、発生しませんでした。
もう1つの質問は、私のアプリはシミュレーターで正常に実行されていますが、デバイスで実行すると、動的に作成されたボタン(ボタン画像)が表示されず、アクションは実行されていますが、画像がありません。理由を教えてください。
iOS でビュー (実際にはビュー コントローラー) 間の通信を維持する方法はいくつかあります。私にとって最も簡単なのは、通知を送信することです。変更したいビューに通知のオブザーバーを追加し、変更をトリガーするビューから通知を投稿します。このようにして、ViewController B から ViewController A に「何か準備ができました。変更を加えてください」と伝えます。
もちろん、これにはレシーバー ビューが作成されていて、既に通知をリッスンしている必要があります。
ViewController B (送信者)
- (void)yourButtonAction:(id)sender
{
[[NSNotificationCenter defaultCenter] postNotificationName:@"theChange" object:nil];
}
ViewController A (レシーバー) で、通知をリッスンするオブザーバーを追加します。
- (void)viewDidLoad
{
//.........
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(makeTheChange) name:@"theChange" object:nil];
}
それを削除することを忘れないでください(この場合、 on dealloc
)
- (void)dealloc
{
[[NSNotificationCenter defaultCenter] removeObserver:self name:@"theChange" object:nil];
[super dealloc];
}
最後に、ラベルを更新するメソッド
- (void)makeTheChange
{
yourLabel.text = @"your new text";
}
それが良い解決策かどうかはわかりませんが、ボタンをクリックしたときにテキストをグローバル NSString に保存し、2 番目のビューをロードするときにその文字列をラベルに入れることができます。