こんにちは、私はこの質問がすでに数回尋ねられているのを見てきましたが、まだ明確な答えがないので、xcode 7 と swift2 用に作成しました (とにかく少し変更された可能性があります)。
Xcode 7 と Cocoa OSX ストーリー ボード + swift2 を使用してプロジェクトを作成したので、プロジェクトはNSViewControllerに接続する NSWindowController から開始しました (予想どおり!)。ウィンドウ コントローラーに NSToolbar を追加し、ツールバーにNSButtonを追加しました。NSViewController を、3 つのNSViewControllerにリンクする新しいNSSplitViewControllerの 1 つに変更し、それらのビューを水平に (垂直の仕切りで) 表示します (写真アプリや Yosemite + のページに表示されるレイアウトに似ています)。私の最終的な目標は、My ツールバーのボタンが最初の分割を表示および非表示にすることです。
それは私の理解であり、これを達成するには、自動レイアウトの制約を多かれ少なかれ変更するアクションを NSSplitViewController に作成する必要があると期待しています: How to do collapse and expand view in mac応用?.
そして、どういうわけか、このアクションをツールバーにある NSButton にリンクします...これはたまたま NSWindowController にあります(階層内ではるかに上にあり、分離されています)...
NSToolbar とストーリーボードに関する他の質問を既に行っており、目標を達成できませんでした:
- YouTube ビデオ: Cocoa Programming L17 - NSToolbarは、問題を解決するために私が見つけた最も近いものですが、彼の方法はストーリーボードでは機能せず、独自の xib ファイルを作成するだけです。
- この質問: How to use NSToolBar in Xcode 6 and Storyboard? ある人は、最初の応答者を使用してリンクを作成し、実行時にすべてが接続されることを期待することを提案しています (これは少し危険に見え、Apple が実装する方法ではないと思います...)。2 番目の人は、NSWindowController でビュー コントローラー変数を作成し、そこからそのプロパティを操作することを提案しましたが、これも少し危険です。
- その質問で見た最新のコメントの 1 つは、問題に取り組むための最良の方法と思われる(しかし、私が推測するほど良くはありません) NSObjectController を各シーンのドックに追加し、シーンが読み込まれるときに値を設定することです。オブジェクトの他のシーンのコントローラーへ。これは本当に前進するための最良の方法ですか?もしそうなら、どうすればこれを達成できますか?
Apple は (再び) WWDC15 で、osx 用のストーリーボードとビュー コントローラーを所有する分割ビュー コントローラーを作成したことについて言及しました。これにより、ロジックを移動して特定のビュー コントローラーに作業できるようになります。これは、変更する必要があるターゲットであるため、分割ビューコントローラー内にあります。
View Controller自体からこれを達成する方法を知っている人はいますか? ToolBarItem をそれに接続する方法を本当に見つけることができませんでした。