2011-02-05 2 views
1

私は現在、Javaの世界から来たObjCとCocoaプログラミングを学んでいます。 私の現在のスキルと学習の進歩をテストするために、私はゼロから小さな電卓アプリを作成しています(OSXではiOSではありません)。複数のCocoa UIオブジェクトに同じアクションメソッドを割り当てています。 NSButtonは可能ですか?

私のUIには、0〜9の10個の数字ボタンがあります。

私の最初の考えは、アクションが送信者の参照を受け取り、 のように-(IBAction)captureDigit:(id)senderのようにして、ボタンのタイトルから数字を取得するだけでした。 しかし、インターフェースビルダーは、アクションが1つの送信者とのみ接続できるようにしています。

私はコントローラで10個のcaptureDigitアクションを作成しました。

私の質問: はどういうわけか可能ですか?私はボタンにアクションをプログラムで追加することを考えましたが(これは可能でしょうか?)、その後、私のコントローラにアウトレットとしてすべての数字ボタンを追加する必要があります。

ボーナス質問: NSButtonは何らかの非可視値を保持できますか?ドキュメントでこれを見つけることができませんでした。 これは、UIがアプリケーション固有のデータを認識するため、MVCパターンに違反する可能性がありますか?事前に任意の有用なと親切な答えを

おかげで、私はまだあなたの送信者からのコントロールドラッグあればそれは問題ではないので、あなたは、ターゲットに一つのターゲット/アクションに多くの送信者を接続することができます

+0

私はIBの「接続済み」インジケータと「使用不可能」インジケータを混同していると思います。これは、アクションまたはコンセントが既にどこかに接続されていることを意味しますが、アクションに他のオブジェクトを接続することを許可します。 – ughoavgfhw

答えて

2

複数のボタンを1つのアクションに確実に接続できます。また、任意のオブジェクトのtagフィールドを使用して、「背後にある」値を与えることができます。

4

を学んでいます。

あなたのボーナスに関する質問は、どのNSViewでもInterface Builderで設定できる整数tagです。これは、複数の同様のビューを区別するのに便利な方法です。

0

複数のアクションを1つのコントローラに追加することは完全に可能です。 Interface Builderはこれをどのようにして防ぐのですか?

コントローラにNSDictionaryインスタンスを持たせることができます。このインスタンスでは、NSButtonを任意のデータに一致させることができます。

+0

迅速な対応のために皆様に感謝します。 Interface Builderのドラッグ・アンド・ドロップ操作は、コントローラの受信したアクション・リストに以前に追加されたアクション送信元を置き換える前に行っていたのではないかと思います。何故私は複数の送信者が可能ではないと思ったのですか?しかし、今は完全に動作します。ごめんなさい。 – Fred

0

IBを作成してNSButtonからFileのオーナーにドラッグすると、NSButtonに送信できるすべてのメソッドが表示され、次にcaptureDigit:を選択できます。今すぐコピーして貼り付けるボタンをクリックしてタイトルを変更し、コピー&ペーストしてIBを接続し、タグフィールドをcostiqueとして使用します.Nitrexは既に言っています。

関連する問題