私はNSButtonとセルに関するAppleのドキュメントを読んでいますが、この2つの違いを本当に理解していないようです。この複雑さに加えて、どちらもなどの方法が大きく重複しているように見え、どちらをsetTitle:
使用すべきかわかりません。
誰かが基本的な違いが何であるかを説明できますか?
ありがとう、
テジャ
私はNSButtonとセルに関するAppleのドキュメントを読んでいますが、この2つの違いを本当に理解していないようです。この複雑さに加えて、どちらもなどの方法が大きく重複しているように見え、どちらをsetTitle:
使用すべきかわかりません。
誰かが基本的な違いが何であるかを説明できますか?
ありがとう、
テジャ
コントロールは、セルの代表または「エージェント」と考えることができます。1コントロールはですNSView
。これは、これらの状況で2つの重要なことを意味します。1つは、描画されるウィンドウの領域を表すことです。2つ目は、ユーザーの操作を受け入れることです。2
ただし、コントロール自体はあまり機能しません。セルはすべての作業を行うものです。たとえば、セルは特定のフレームに自分自身を描画できることに注意してください。これはビューの責任ですが、コントロールはそれをセルに委ね、単に描画するための領域を提供します。
同様に、ユーザーがコントロールをクリックすると、コントロールはイベントを受信してその意味を理解しますが、イベントに応答してアクションを実行する作業はセルに渡されます。
さまざまなコントロール/セルのペア(NSButton
およびNSButtonCell
そのようなペアの1つ)のドキュメントを見ると、「カバー」メソッドについての言及があります。これは、コントロールに対応するセルと同じ名前のメソッドがあり、セルを呼び出すだけであることを意味します。それがあなたが言及した重複の原因です。これらのメソッドの1つを使用する場合は、コントロールで呼び出します。ペアのパブリックフェイスとして、とにかくセルに尋ねるだけです。
アップルが提供する相互作用の最も良い説明は、コントロールとセルのプログラミングトピックガイドの「コントロールとセルの相互作用」です。
1ギグを調達するエージェントを持つ俳優の意味で。
2これはすべてのビューに厳密に当てはまるわけではありません。それは実際には継承元の機能NSResponder
ですNSView
。
OS X用のCocoaプログラミングからの抜粋:Big Nerd Ranch Guide
「セルは、コントロールの実装の詳細を処理します。ほとんどの場合、セルのプロパティとメソッドは、対応するコントロールの同一のプロパティとメソッドによって「カバー」されます。たとえば、ラベルのタイトルを変更すると、ラベルのセルが機能しますが、ラベルのstringValueプロパティを操作します。
ココアでは細胞の歴史が長い。これらは元々、パフォーマンスの問題に対処するために追加されました。コントロールの基本的なタスクの多くはセルに渡され、コントロールよりも効率的に実行できます。
Macコンピュータは当時よりもはるかに強力であり、セルは邪魔になっています。Appleは、セルの廃止を進めていると述べていますが、ドキュメントのアウトラインや古いコードには引き続きセルが表示されます。」</ p>
NSButtonCell
NSActionCell
は、プッシュボタン、スイッチ、およびラジオボタンのユーザーインターフェイスを実装するために使用されるのサブクラスです。また、クリックされたときにターゲットにメッセージを送信するように設計されたビューの他の領域にも使用できます。のNSButton
サブクラスはNSControl
単一のを使用しNSButtonCell
ます。スイッチまたはラジオボタンのグループを作成するにはNSMatrix
、のセットを押したままにしNSButtonCell
ます。
NSButton Cellには、描画と動作のためのより多くのキュート化可能なオプションがあります。違いは、継承元のクラスでよくわかります(NSButtonCellはActionCellクラスから継承しますが、NSButtonはNSControlクラスから継承します。
ドキュメントをよく見てください。
ボタンの描画方法と動作方法に基づいて選択する必要があります。シンプルなボタンが必要な場合は、NSButtonを使用してください。