1

両方が異なるクラスのuiviewコントローラーにある場合にボタンクリックでラベルを更新する方法...ボタンをクリックすると、ラベルを更新する必要があります...何度も試しましたが、発生しませんでした。

もう1つの質問は、私のアプリはシミュレーターで正常に実行されていますが、デバイスで実行すると、動的に作成されたボタン(ボタン画像)が表示されず、アクションは実行されていますが、画像がありません。理由を教えてください。

4

2 に答える 2

7

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";
}
于 2012-06-29T08:46:07.660 に答える
0

それが良い解決策かどうかはわかりませんが、ボタンをクリックしたときにテキストをグローバル NSString に保存し、2 番目のビューをロードするときにその文字列をラベルに入れることができます。

于 2012-06-29T07:51:33.730 に答える