問題タブ [nstabview]

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.

0 投票する
0 に答える
217 参照

xcode - ドキュメントベースではないアプリ向けの macOS のタブ機能

macOS Sierra の下の Xcode 8 では、ドキュメントベースのアプリを作成することができ、Safari や Xcode 自体が macOS Sierra より前に行っていたのと同じように、開いているさまざまなドキュメントをタブに自動的に表示できます。さて、これを別のコンテキストでも使用できるかどうかを知りたいです。ユーザーがドロップダウン メニューから本を読み込めるアプリを想像してみてください。その本の章がタブビューで選択できるのが好きです。ただし、標準の NSTabView は、前に述べたものほど見栄えがよくないため、オプションではありません。

0 投票する
1 に答える
1151 参照

autolayout - NSTabView 内の NSSplitView のレイアウトの問題 - 制約の欠落

私の問題を説明するために、非常に単純なダミー プロジェクトを作成しました (10.12.1 で Xcode 8.1 を使用)。2 つのタブを持つ NSTabViewController を含むストーリーボードがあり、そのうちの 1 つは NSSplitViewController です。すべてが完全に機能しているように見えますが、実行時に次の警告が表示されます。

"TabSplitViewDummy[3615:89221] [レイアウト] <_NSSplitViewItemViewWrapper: 0x6000001a0d20> の不足している制約が検出されました。サイズと原点を完全に定義するのに十分な制約がないため、配置できません。不足している制約を追加するか、translatesAutoresizingMaskIntoConstraints=YES と制約を設定しますこのビューが macOS 10.12 以降で手動でレイアウトされている場合、オーバーライドから [スーパー レイアウト] を呼び出さないことを選択できます。DETECTED_MISSING_CONSTRAINTS にブレークポイントを設定してデバッグします。このエラーは一度だけログに記録されます。"

translatesAutoresizingMaskIntoConstraints=YES をすべてのビューに設定し、制約を設定しようとしましたが、何も機能しませんでした。これまでのところ、私は3つのことしか知りませんでした:

  1. 起動時に分割ビューが非表示になるようにタブの順序を変更しても、警告メッセージは表示されません
  2. タブ ビューを削除し、ウィンドウの分割ビュー コンテンツを作成すると、警告メッセージは表示されません。
  3. DETECTED_MISSING_CONSTRAINTS にシンボリック ブレーク ポイントを設定すると、6 回ヒットするため、制約が 6 つ不足していると推測されます。

私はすでにこれで何日も失っています。ここで何が欠けていますか?

助けてくれてありがとう!!!

GitHub ダミー プロジェクト

0 投票する
1 に答える
950 参照

swift - Swift/Cocoa:現在選択されているタブに値をバインドする方法

設定ペインでの作業。NSTabView があります。タブは XIB から動的に作成されます。それらはすべて非常に似ていますが、同一ではありません。そのため、現在選択されているタブに応じて、いくつかの値を変更する (およびいくつかのコントロールを表示または非表示にする) 必要があります。

通常、NSTabView.selectedTabViewItem にバインドすることは可能であると考えられます。しかし、これは機能しません。なんで?値が更新されることはありません。

次に、よりクリエイティブになり、観察するバインディングに適切な値を返す算出プロパティを作成することを考えました。まだサイコロはありません。アプリの起動時にバインディングが評価され、更新されることはありません。

次に、乱雑にすることにし、デリゲートを作成して tabView の didSelect メソッドを実装しました。これにより、現在選択されているタブが、バインディングが監視できる保存されたプロパティに書き込まれます。

この最後のアプローチは機能しますが、非常にぎこちなく、汚れているように感じます。誰かがより良い方法を知っていますか?

編集: NSTabViewController を実装しようとしていますが、動作させることができません!

NSTabViewController を IB で作成した NSTabView オブジェクトに手動でバインドすると、すべてが適切に初期化されたように見えますが、タブは表示されません。そして、コントローラー内のすべてを初期化してから、NSTabViewController.tabView プロパティを介して NSTabView を割り当てようとすると、次のようになります。

do cumentationが指定する方法でそれをやろうとしているので、これは奇妙です. 実際、やろうとしてもTabViewController.tabView = NSTabView()同じエラーが発生します。これはバグですか?

これが私のコードの関連部分全体です。