9

私はNSButtonとセルに関するAppleのドキュメントを読んでいますが、この2つの違いを本当に理解していないようです。この複雑さに加えて、どちらもなどの方法が大きく重複しているように見え、どちらをsetTitle:使用すべきかわかりません。

誰かが基本的な違いが何であるかを説明できますか?

ありがとう、
テジャ

4

4 に答える 4

10

コントロールは、セルの代表または「エージェント」と考えることができます。1コントロールはですNSView。これは、これらの状況で2つの重要なことを意味します。1つは、描画されるウィンドウの領域を表すことです。2つ目は、ユーザーの操作を受け入れることです。2

ただし、コントロール自体はあまり機能しません。セルはすべての作業を行うものです。たとえば、セルは特定のフレームに自分自身を描画できることに注意してください。これはビューの責任ですが、コントロールはそれをセルに委ね、単に描画するための領域を提供します。

同様に、ユーザーがコントロールをクリックすると、コントロールはイベントを受信して​​その意味を理解しますが、イベントに応答してアクションを実行する作業はセルに渡されます。

さまざまなコントロール/セルのペア(NSButtonおよびNSButtonCellそのようなペアの1つ)のドキュメントを見ると、「カバー」メソッドについての言及があります。これは、コントロールに対応するセルと同じ名前のメソッドがあり、セルを呼び出すだけであることを意味します。それがあなたが言及した重複の原因です。これらのメソッドの1つを使用する場合は、コントロールで呼び出します。ペアのパブリックフェイスとして、とにかくセルに尋ねるだけです。

アップルが提供する相互作用の最も良い説明は、コントロールとセルのプログラミングトピックガイドの「コントロールとセルの相互作用」です。


1ギグを調達するエージェントを持つ俳優の意味で。
2これはすべてのビューに厳密に当てはまるわけではありません。それは実際には継承元の機能NSResponderですNSView

于 2011-05-24T19:12:30.593 に答える
2

OS X用のCocoaプログラミングからの抜粋:Big Nerd Ranch Guide

「セルは、コントロールの実装の詳細を処理します。ほとんどの場合、セルのプロパティとメソッドは、対応するコントロールの同一のプロパティとメソッドによって「カバー」されます。たとえば、ラベルのタイトルを変更すると、ラベルのセルが機能しますが、ラベルのstringValueプロパティを操作します。

ココアでは細胞の歴史が長い。これらは元々、パフォーマンスの問題に対処するために追加されました。コントロールの基本的なタスクの多くはセルに渡され、コントロールよりも効率的に実行できます。

Macコンピュータは当時よりもはるかに強力であり、セルは邪魔になっています。Appleは、セルの廃止を進めていると述べていますが、ドキュメントのアウトラインや古いコードには引き続きセルが表示されます。」</ p>

于 2016-01-19T03:18:35.240 に答える
0

NSButtonCellNSActionCellは、プッシュボタン、スイッチ、およびラジオボタンのユーザーインターフェイスを実装するために使用されるのサブクラスです。また、クリックされたときにターゲットにメッセージを送信するように設計されたビューの他の領域にも使用できます。のNSButtonサブクラスはNSControl単一のを使用しNSButtonCellます。スイッチまたはラジオボタンのグループを作成するにはNSMatrix、のセットを押したままにしNSButtonCellます。

于 2016-01-28T12:54:05.517 に答える
-2

NSButton Cellには、描画と動作のためのより多くのキュート化可能なオプションがあります。違いは、継承元のクラスでよくわかります(NSButtonCellはActionCellクラスから継承しますが、NSButtonはNSControlクラスから継承します。

ドキュメントをよく見てください。

http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/Classes/NSButton_Class/Reference/Reference.html

http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/Classes/NSButtonCell_Class/Reference/Reference.html

ボタンの描画方法と動作方法に基づいて選択する必要があります。シンプルなボタンが必要な場合は、NSButtonを使用してください。

于 2011-05-24T15:41:54.203 に答える