問題タブ [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 - サブビューを使用してカスタムセルで NSTableView をセットアップする方法
ArrayControllerとBindingsを使用して、カスタム セルでNSTableViewをセットアップしようとしています。これを実現するために、カスタム セルにサブビューを追加しました。データ接続は何とか機能しているようです。ただし、修正できない再描画の問題があるようです。アプリケーションをロードすると、一部のセルのみがレンダリングされます。行をスクロールするか、行を選択すると、レンダリングが変わります。
問題が何であるかを説明するために、github でサンプル プロジェクトを作成しました。
セル レンダリングの実際のソース コードは、次の場所にあります。
親controlView
が再描画しないようです。どうにか強制できませんか?
objective-c - NSCellのNSView
私はこれについてたくさん読んだのですが、それを動作させることができません、私はこのコードでカスタムNSCellを持っています
そしてこれは私のNSTableViewデータソースです:
私が理解しているように、drawwithframe ...はセルが初期化されたときに呼び出されますが、呼び出されることはありません。
objective-c - 複数行のNSTextFieldCell
NSTextFieldCellを、各行に異なる形式の複数の行で表示する必要があります。
このようなもの:
1行目:タイトル
2行目:説明
NSTextFieldCellをサブクラス化しましたが、それを続行する方法がわかりません。
何か案は?
cocoa - NSSliderCell と NSButtonCell は値を変更しません
値が NSArrayController の値にバインドされている NSTableColumn を持つ NSTableView があります。デリゲートを使用して、どの行にどのセル型があるかを指定しています。.nib ファイルで、列のセルが NSTextFieldCell の場合、NSSliderCell および NSButtonCell チェックボックスの値は変更されません (チェック ボックスをクリックしてスライダーを動かすことはできますが、マウスを離すと値が元に戻ります)。 )。(nib ファイルの) セル タイプを NSActionCell に変更すると、NSButtonCell と NSSliderCell は正しく機能しますが、NSTextFieldCell を編集できません。私が使用するとき- [NSTableView editColumn:row:withEvent:select:]
セルを強制的に編集するには、NSSliderCell や NSButtonCell と同様に、値を送信すると元の値に戻ります。NSTableColumn をサブクラス化し、dataCellForRow: メソッドをオーバーライドしようとしましたが、同じ結果が得られました。NSTableColumn のすべてのバインドを切断すると、同じ結果が発生します (もちろん、セルはすべて空白です)。
これを解決する方法について何かアイデアはありますか?
ありがとう。
objective-c - NSCellのNSAttributedString
NSAttributedStringを使用してフォーマットしたデータをNSOutlineViewに入力しています。これまで、テキストのフォント、サイズ、色をフォーマットしました。私の問題は、行を選択しても前景色が変わらないことです。NSTextFieldCellを作成し、Interface Builderで色をdisabledControlTextColorに設定すると、正常に機能します。選択されていない場合は灰色で表示され、白で選択されている場合は、プログラムでこの色を属性付き文字列定義に設定すると、常に次のように表示されます。グレー。
前もって感謝します。
objective-c - 部門のあるNSCell
次のサンプルのようにNSCellを描画する方法があるかどうか知りたいです。アイデアは、同じ列、3行に収まるようにすることです。最初の行はタイトルに十分なスペースがあり、残りは2列です。
TITLE_ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ _ _1 _ _ _
_
_ DATA_TITLE_4:DATA_VALUE_2
ノート:
- 「___」は3つのスペースであると想定されていました(それらを表現する方法がわかりません)。
- 列のタイトルと値の長さは異なることに注意してください。
前もって感謝します。
objective-c - NSCellのアニメーション
NSOutlineView でいくつかのセルをアニメーション化しようとしています。左パネルのデバイスの横にある iTunes 同期アイコンとして回転するようにアイコンをアニメーション化する必要があります。
私はアニメーションの分野であまり経験がありません。インターネット全体を調べて、この簡単な解決策を見つけました。
このソリューションで私が抱えている問題は、NSCell の異なるサブクラスのいずれにも、使用できる CALayer がないことです。そこでまず、CALayer を含む NSImageView を追加して NSCell をサブクラス化することにしました。アニメーションは機能しましたが、エクスペリエンスはひどいものでした。画像ビューは信じられないほど非効率的で、ほとんどスクロールできず、アニメーションは行の 1 つでしか機能しませんでした。
私が今やろうとしているのは、サブクラス NSButtonCell (セルにアクションを設定する必要があります。そうしないと NSImageCell になります)、drawWithFrame メソッドをオーバーライドし、受信した NSView (controlView) に subLayer を追加して、それをアニメーション化します。
現在の問題は、アニメーションが機能しないことです。
コードを残します。
PLZヘルプ!
前もって感謝します。
みきわん。
cocoa - 編集モードで NSTextField の代わりにカスタム ビューを表示する NSTextFieldCell を作成する方法は?
NSTextFieldCell を含む 3 つの列を持つ tableView があります。すべてにバインディングが設定されています。
いずれかの列のセルのテキストは計算され、直接編集することはできません。この列では、セルが編集モードになったときに、 textField の代わりにボタンまたはカスタム ビューを表示したいと考えています。
別の言い方をすれば、編集されていないときはNSTextFieldCellであるNSCellが必要であり、編集されているときはNSButtonCell (またはカスタム ビュー) が必要です。
これに進むためのヒントはありますか?
これが私が試したものですが、成功しませんでした:
- #1を試してください:
NSTextFieldCell
以下に示すように aとオーバーライドをサブクラス化しましたfieldEditorForView:
=> 問題は、返される NSButton が応答しないことsetDelegate:
と、おそらく他の多くのものです。
- #2を試してください:
サブクラスNSTextFieldCell
とオーバーライドdrawWithFrame: inView:
=> このメソッドは、編集モードでないときにセルを描画するためにのみ使用されます。
- #3を試してください:
この手がかりにはいくらかの可能性がありますが、明らかに何かが欠けています。
ウィンドウのデリゲートに実装windowWillReturnFieldEditor: toObject:
し、カスタム フィールド エディターを返します。私は正しい軌道に乗っているように見えますが、何かを見逃していました。引数 anObject は決して私のカスタム セルではありません (再確認したところ、XIB で適切に定義されています)。
objective-c - NSOutlineView からセルの内容を取得する
NSOutlineView で発生する奇妙な問題があります。ビューは基本的に、子として関連付けられたファイルを持つアプリのリストです。ビューをデータソースに手動で入力すると、すべて正常に機能します。私が今やりたいことは、アイテムを削除するためのボタンを用意することです。それを行うために、removeAppOrFile メソッドを次のように実装しました。
myView は、NSOutlineView に接続された IBOutlet です。別の行を選択してボタンをクリックすると、selectedRow の値は適切に変更されますが、NSCell オブジェクトは決して変更されず、その値 (つまり、NSString アイテム) は常に最後の表示アイテムの値を示します (つまり、最後のアイテム NSString アイテムとして子を持つアイテムは、展開されていない場合は親になり、展開されている場合は最後の子になります)。
奇妙なことは、NSOutlineView の doubleAction に基本的に同じコードを他の場所で使用していて、完全に機能することです。その場合、コードは次のようになります。
この場合、送信者は OutlineView です。行番号の変更に伴うアイテムとセルの変更。
最初の例でなぜ機能しないのかについて何か考えはありますか?