問題タブ [nscell]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
objective-c - Interface BuilderでNSCellサブクラスを設計することは可能ですか?
NSTableViewで使用するためにNSCellをサブクラス化しようとしています。作成したいセルはかなり複雑なので、Interface Builderで設計してから、ペン先からNSCellをロードできると非常に便利です。
これは可能ですか?どうすればいいのですか?
objective-c - カスタム NSCell 内のクリック可能なリンク
内部にさまざまな要素 (画像、さまざまなテキスト) を含むカスタム NSCell があり、それらのテキスト ブロックの 1 つにさまざまなクリック可能なリンクが含まれている場合があります。NSAttributedString でリンクを正しく識別して青色に着色していますが、カーソルを手に変えてユーザーが実際にクリックできるようにする方法がわかりません。
現在、属性付きの文字列がセルに直接描画されていますが、これは明らかにクリックできませんが、NSCell は NSView を継承していないため、他の方法で追加する方法がわかりません。通常、サブビューとして NSTextField を追加するだけですが、この場合はそのようにはできません。
何かご意見は?
memory-management - コアデータとカスタム NSCell
Log
2 つのエンティティ(属性text
とdate
)のコア データを使用し、 からへTag
の多対多のtags
関係を持つおもちゃのアプリを構築しています。Log
Tag
ログをテーブルに表示したいので、次のようにします。
- エンティティを( pic )に設定して IB に
NSArrayController
インスタンスを作成しましたLogController
Log
NSTableView
にバインドされた列を持つ1 列を作成しましたLogController
。写真LogController
を使用して、アプリ内のデリゲート (AppDelegate
) をリンクしましたIBOutlet
。AppDelegate
も持っていmanagedObjectContext
ます。- プロパティを持つカスタム
NSCell
クラスを作成し、それをセルに描画しましたNSString
mainText
tagsText
- メソッドで上記の 2 つのセル プロパティを設定し
AppDelegate
ます- (void)tableView: willDisplayCell: forTableColumn: row:
。(MainController
テーブルのデリゲートでもあります)。現在のtagsText
ログのタグを取得し、それらを単一のログに連結しますNSString
複数のタグを表示する行をマウスで選択すると、アプリがEXC_BAD_ACCESS
. エラーが発生したのはそのときだけですが、何が原因なのかわかりません。
cocoa - NSTableViewでNSButtoncellタイプのセルの背景色を設定するにはどうすればよいですか?
これは私のテーブルビューデリゲートです:
通常のセルを表示することは問題なく機能しますが、NSButtonCellタイプ(チェックボックス用)のセルを追加すると、テーブルビューがフリーズします。それを修正する方法は?
どんな助けでもいただければ幸いです。
cocoa - NSCell はどのように表示されますか?
NSControl のセルがビュー階層にありません。私は正しいですか?
そうでない場合、ビュー階層にない場合、ビューにどのように描画されていますか?
ビュー/コントロールのサブクラスをコンテンツビューにドラッグアウトし、そのビューにボタンを追加して、最下位のコンポーネントをセルにしたいのでお願いします。したがって、セルはすべてのクリック イベントを取得し、何かを実行してから、それらをボタンに渡すことができます。
ウィンドウ ->ContentView -> CustomView ->(ボタン、ボタン、ボタン)
NSResponder さん、ありがとうございます。
Costique さん、私はいつも最初に Apple のドキュメントをチェックします。私はただ説明を求めていました。
objective-c - NSTableViewのカスタムNSCellでバインディングを使用してモデルオブジェクトを公開する
私は、比較的一般的なタスクだと思うことを実行しようと奮闘しています。をNSTableView
介してその配列にバインドされているがありNSArrayController
ます。アレイコントローラのコンテンツは、モデルクラスのNSMutableArray
1つ以上のインスタンスを含むに設定されています。NSObject
方法がわからないのは、NSCell
バインディングに適した方法でサブクラス内のモデルを公開することです。
説明のために、オブジェクトモデルは、名、名前、年齢、性別で構成される人物であると言います。したがって、モデルは次のようになります。
明らかに、クラスに適切なセッター、ゲッターinitなど。
私のコントローラークラスでは、、、および:を定義NSTableView
しNSMutableArray
ますNSArrayController
。
Interface Builderを使用すると、モデルを適切な列に簡単にバインドできます。
myPersonArray --> myPersonArrayController --> table column binding
これは正常に機能します。したがって、余分な列を削除し、NSArrayController
(各行との間の関連付けを作成して維持する)にバインドされている1つの列を非表示のままNSArrayController
にして、1つの非表示のNSTableView
列と1つの非表示の列に移動します。NSCell
サブクラスを作成し、適切な描画メソッドを配置してセルを作成します。私のawakeFromNib
中で私はカスタムNSCell
サブクラスを確立します:
これも、描画の観点からは問題なく機能します。カスタムセルが列に表示され、アレイコントローラー内のすべての管理対象オブジェクトに対して繰り返されます。オブジェクトを追加したり、アレイコントローラからオブジェクトを削除したりすると、それに応じてテーブルが更新されます。
しかし...私は自分のオブジェクトが私のサブクラスPersonModel
内から利用できるだろうという印象を受けました。NSCell
しかし、私はそれに到達する方法がわかりません。セッターとゲッターを使用してそれぞれを設定したくないのは、配列コントローラーからデータを参照するのNSCell
ではなく、データを格納することでモデルの概念全体を壊しているためです。NSCell
そして、はい、私はカスタムを持っている必要があるNSCell
ので、複数の列を持つことはオプションではありません。ここからどこへ?
GoogleとStackOverflowの検索に加えて、私はAppleのドキュメントで必須のウォークスルーを実行しましたが、答えが見つからなかったようです。私は茂みの周りを打ち負かす多くの参照を見つけましたが、何も含まれていませんNSArrayController
。コントローラーは、モデルエンティティの他の要素(マスター/詳細シナリオなど)にバインドするときに非常に簡単になります。Core Dataを使用しているときに、多くの参照(回答はありませんが)も見つかりましたが、CoreDataを使用していません。
当たり前のように、私は提供できるどんな援助にも非常に感謝しています!
cocoa - NSImage の下に影を描く
現在、次のようにカスタム NSCell で NSImage を描画しています。
非常に単純に、その下に画像を描く方法を考えています。iPhone では、次を使用してこれを行いますCGContextSetShadow (currentContext, CGSizeMake(1, -1), 2)
。UIImageを描画する直前ですが、Macでそれを行う方法に慣れていません。
どんな指針も素晴らしいでしょう。
objective-c - NSTextFieldCellまたは垂直テキスト(および色付き)を含むNSCellのみ
テーブルビューの列ヘッダーを垂直方向に表示するエレガントな方法を見つけるのに苦労しています(従来の方法から反時計回りに90度回転)。私は実際のNSTableHeaderCellとしてこれを行うことと結婚していません。NSTextFieldCellまたはNSCellをオーバーライドする方が簡単かもしれないと考えました。
セルには編集不可能なテキストのみが含まれていますが、通常は2行であり、コンテキストによっては列の残りの部分で色付けされる場合があります。
私はこれを行うカカオアプリを見つけることができないようです。ましてやオープンソースの例です。何かご意見は?
cocoa - NSFormatter に NSTextFieldCell を継続的に検証させる
Cocoa には、セルが NSTextFieldCell である NSOutlineView があります。セルには、特定のルール (float、または間にスペースを入れた float のペアなど) に従って書式設定された文字列である値が表示されます。テキストを検証するためにカスタム NSFormatter を作成しましたが、これは問題なく動作するようです。
ただし、セル(またはアウトラインビュー、何が原因かはわかりません)は、編集が終了する瞬間にのみフォーマッターを使用しているようです。テキスト フィールドにアルファベット文字を入力すると (書式設定規則に違反します)、これらの文字が表示されます。フォーマッタが機能していることに気付く唯一の方法は、キーボード フォーカスをこのセルから移動できなくなったことです。セルの内容を有効なフォームに戻すと、フォーカスを移動できます。
セルとアウトライン ビューの両方を「連続」に設定しました。
そもそもセルにテキストを入力できなかった方がよいでしょう。そのようにすることは可能ですか?
cocoa - Cocoa: 編集可能なテキスト領域を持つカスタム NSView を実装する方法は?
編集可能なテキスト領域を持つカスタム NSView を作成するために必要な最小限の実装は何ですか? これには NSTextFieldCell を使用できると思います。ビューでセルを描画することに成功しましたが (これは簡単です)、編集可能にするには、ビューとセルの間でより複雑な調整が必要なようです。サンプルコードはどこかにありますか?
アップデート。私の長期的な目標は、同じビュー上により多くの編集可能なテキスト領域を持つことであることを明確にするべきでした。知る限り、セルは本格的なビューよりも軽量であるため、その場合はセルを使用することをお勧めします。私の更新された質問は次のとおりです。適切な NSCell を使用して、編集可能なテキスト領域を持つカスタム NSView を作成するために必要な最小実装は何ですか?