0

すべてのラウンドの各プレーヤーのスコアを保持する多くのUITextFieldsを持つスコアボードアプリがあります。テキストフィールドをクリックするとき、キーボードを使用してスコアを入力する代わりに、別のviewControllerを作成します(ポップオーバーまたはページカールモーダルセグエが機能します)。この2番目のビューコントローラーには、プレーヤーがスコアを入力するために使用できる特別な計算機があります。したがって、基本的にすべてのスコアボックスは、電卓ビューへのアクションをトリガーします。電卓ビューで結果を取得したら、ビューを閉じて、計算されたばかりのスコアをスコアボックスに表示し、セグエを発生させたいと思います。(特定のUILabel.textを2番目のビューコントローラーから最初のビューコントローラーに転送したい)。

これを行うためのたくさんの方法を試した後、私は代表者について学ばなければならないように感じます。私はこの概念に頭を悩ませて、これが私がやろうとしていることに本当に当てはまるかどうかを確かめようとしています。どういうわけか、UITextFields(スコアボックス)に計算機の結果が変化するのを「聞く」または「待つ」必要があるようです。これは正しいです?私は物事を複雑にしすぎていますか?これを機能させるには、代理人について学ぶ必要がありますか?

4

1 に答える 1

0

はい、委任をいじって、やりたいことを達成できます。また、「NSNotificationCenter」を使用して、特定のイベントをリッスンしたり、メソッドを呼び出したりすることもできます。

このような:

オブザーバーを追加します:

[[NSNotificationCenter defaultCenter] addObserver:self
        selector:@selector(receiveTestNotification:) 
        name:@"TestNotification"
        object:nil];

次に、テキストフィールド入力から言ったように、好きな場所から投稿します。

[[NSNotificationCenter defaultCenter] 
        postNotificationName:@"TestNotification" 
        object:self];

そして、このような方法でそれを受け取ります

-(void) receiveTestNotification:(NSNotification *) notification
{
    // [notification name] should always be @"TestNotification"
    // unless you use this method for observation of other notifications
    // as well.

    if ([[notification name] isEqualToString:@"TestNotification"])
        NSLog (@"Successfully received the test notification!");
}
于 2012-08-03T03:05:49.257 に答える