問題タブ [nspathcontrol]
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 - NSPathControlをカスタマイズする
カスタムを作りたいNSPathControl
です。
コンポーネントセルのカスタムクラスを返すことができるNSPathCell
メソッドがあります。+ pathComponentCellClass
サブクラスがNSPathComponentCell
あり、そこに戻りますが、機能しません。メソッドは呼び出されません。なんで?
ドキュメントには次のように書かれています。
サブクラスは、このメソッドをオーバーライドして、自動的に使用されるカスタムセルクラスを返すことができます。デフォルトでは、メソッドは[NSPathComponentCellクラス]またはその特殊なサブクラスを返します。
これが間違っている場合、カスタマイズする別の方法はありNSPathControl
ますか?
objective-c - NSPathControl と自動レイアウト
NSPathControl
自動レイアウトに問題があります。
ウィンドウに合わせてパス コントロールのサイズを変更したい。つまり、ウィンドウの幅を拡大すると、 も拡大するNSPathControl
必要があります。これは機能します。
問題は、パス コントロールの URL をより長い URL に変更すると、パス コントロールが自動的に展開されることです。私はそれをしたくありません。ユーザーがウィンドウのサイズを変更する場合を除いて、パス コントロールの幅を同じに保ちたい。
幅を固定しようとしましたが、ウィンドウのサイズをまったく変更できません...
また、パス コントロールのウィンドウを固定しないと、URL を表すサブ コントロールの実際のコンテンツよりも小さくすることはできません。
それが理にかなっていることを願っています。
どうすればこれを修正できますか?
objective-c - NSPathControl セットパス
NSPathControl のパスを「~/Desktop」に設定する方法を探しています。
nsurl - plist の NSURL をサンドボックス化されたアプリの NSPathControl にバインドする方法は?
私の OS X アプリには、ユーザーが選択したディレクトリへの永続的なアクセスが必要です。value
アプリ サンドボックスを有効にする前は、UIにはデータ モデルへのバインディングを備えた NSPathControl がありました。モデルのデータ型は でNSData
あり、バインディングはNSKeyedUnarchiveFromData
値トランスフォーマーを使用しました。それはうまくいきました。
アプリのサンドボックス化がオンになっていると、NSURL がセキュリティ スコープではないため、これは明らかに失敗します。これを改善するためにNSKeyedUnarchiveFromData
、以下に示すように、バインディングのトランスフォーマーを独自のトランスフォーマーに置き換えました。
残念ながら、常に正しく機能するとは限りません。私 (ユーザーとして行動) が NSPathControl からファイルを選択すると、transformedValue:
渡された NSData 引数が非 nil であっても nil を返すことがあります。つまり、NSURL はブックマーク データを解決しません。ここで何が起こっているか知っている人はいますか?失敗した場合、によって返されるエラーURLByResolvingBookmarkData:options:relativeToURL:bookmarkDataIsStale:error:
は
エラー Domain=NSCocoaErrorDomain Code=259 「ファイルの形式が正しくないため、ファイルを開くことができませんでした。」
cocoa - NSPathControl と NSPathControlItem はバグだらけですか、それとも私ですか? (ヨセミテ)
Apple は、Yosemite の NSPathControlItem で動作するように NSPathControl を変更しました。
しかし、私が座っているところから見ると、これらの新しいクラスはまったく機能しません。データ構造にカスタム パスを表示しようとしていますが、通常のファイル パスにも同様の問題があります。それは私ですか、それともアップルですか?
これが私のコードです:
最初のスニペットは次のように機能し、パスが表示されます。しかし、それが機能するすべてです。
パスの任意の部分をクリックして NSPathControlItem からプロパティを取得しようとしても、まったく機能しません。すべてが nil を返します。
NSPathControlItem でパスを作成しようとすると、プロパティ (タイトル、URL) を設定できません。
また、NSPathControlItem はサブクラス化されるべきではありません。
ここで何が起こっているのですか?
編集
私が知る限り、NSPathControlItem には問題があります。NSPathControlItem を作成するヘルパー関数。
NSPathControlItem を作成し、そのタイトルを出力するテスト関数。
予想される出力は、a、b、c の 3 行です。私はnil、b、nilを取得します。
NSPathControl に直接 pathItems を設定すると、機能します。
ただし、pathItems を間接的に設定すると、すべてが地獄になります。
編集 2
私はこれをもう一度見ました。pathItem 関数で NSPathControlItem を構成します。ここでタイトルを設定します。attributedTitle を設定しても違いはありません。lldb でアイテムを検査すると、正しい (属性付きの) タイトル値が表示されます。
しかし、NSPathControlItem の配列を NSPathControl に割り当てると、タイトルの値は "" になり、attributedTitle は初期化されません。
macos - NSPathComponentCell の URL を設定するには?
設定画面にいくつかの NSPathControls があります。NSUserDefaults から保存された設定を取得し、保存された URL で NSPathControl の NSPathComponentCell を初期化できるようにしたいと考えています。
現在、次のコードがあります。
viewDidLoad() メソッドのコメントアウトされた行で、URL を使用して NSPathComponentCell を初期化しようとしていますが、NSData として何を渡せばよいかわかりません。これはこれを行う正しい方法ですか?
macos - 値にバインドされている場合、NSPathControl は placeholderString を表示しません。
被験者はすべてだと言います。
IB でプレースホルダー メッセージを含む NSPathControl を作成しました。アプリを実行すると、プレースホルダー テキストが表示されます。
次に、コントロールの値をコントローラーの NSURL* プロパティにバインドしました。これで、プロパティ値が nil の場合でも、プレースホルダー テキストは表示されなくなりました。
困惑した。