8

NSSplitViewControllerをルートとして 使用NSTabViewControllerし、detailViewController として接続されているこのアプリがあります。

このアプリは 1024x768 で起動するように設定されています。左ペインは 320x768 で起動し、右ペイン (tabViewController がある場所) は 704x768 で起動する必要があります。

このアプリを 10 回実行すると、9 回は正しくないサイズ (約 500x500) で起動します。その他の奇妙な点は、このアプリはスケーラブルであってはならないということですが、マウスをウィンドウの境界線の近くに置くと、カーソルがスケーリングするように表示されます。

これを正しいサイズで起動し、スケーラブルなオプションがないことを望みます。

これらの設定はどちらもインターフェイス ビルダーにありますが、無視されています。

この問題を示すサンプル プロジェクトは、こちらからダウンロードできます。プロジェクトを数回停止して実行し、問題を確認します。

これを解決するにはどうすればよいですか?

4

2 に答える 2

19

何が問題を引き起こしているのかはっきりとは言えませんが、問題を解決できる方法の 1 つは、いくつかの制約を追加することです。Interface Builder では、分割ビューの左右のパネルに挿入するデフォルトの NSView インスタンスを制限できないため、独自のインスタンスを追加する必要があります。以下のスクリーンショットはデモから取得したものですが、次のことを行った後です。

  1. 左の分割 ( My Content View ) にサブビューを追加し、その端をそのスーパービューの端に固定しました (ビュー Xcode は自動的に分割ビューに追加されます)。
  2. マイ コンテンツ ビューに 320 ピクセルの明示的な幅制限を追加しました

ここに画像の説明を入力

アプリをロードすると、両方の分割が表示され、仕切りが動かず、ウィンドウのサイズを変更できません。

更新 - より良い解決策

制約はこの問題を解決する 1 つの方法ですが、問題の根本は Interface Builder の予期しない動作にあると思います。オブジェクトをキャンバスにドラッグし、NSSplitViewControllerそれをウィンドウ コントローラーのcontent window関係のターゲットにすると、分割ビュー コントローラーのviewアウトレットは実際には設定されません。この結果の 1 つは、アプリをロードすると、仕切りが片側にあるように見えることです。これを解決するには、前述のビュー アウトレットを分割ビューを指すように設定します。

ここに画像の説明を入力

質問者様のデモアプリと同様の設定でデモプロジェクトを作成しました。

于 2015-01-28T11:05:38.800 に答える
1

NSTabViewController参考までに、ウィンドウ コンテンツ セグエがシーンを指している場合、同じ問題が発生します。新しいウィンドウが 500x500 のサイズで開きます。

ウィンドウとメインタブのView Controllerの間にコンテナビューを備えたプレーンView Controllerを配置することで解決しました。ウィンドウはコンテナ ビューのサイズを初期サイズとして使用します。

これが私が詳細にしたことです:

  1. ストーリーボードに新しいビュー コントローラー シーンを追加しました
  2. そのビューを、ウィンドウで最初に使用するサイズにしました
  3. 新しいView Controllerシーンにコンテナビューを追加し、コンテナがビューを完全にカバーするように4つの制約を追加しました
  4. ウィンドウのコンテンツ セグエを新しいビュー コントローラに接続しました
  5. 最後に、コンテナ ビューを実際のタブ ビュー コントローラ シーンに接続します

前:

[Window Controller Scene] → [Tab View Controller]

後:

[Window Controller Scene] → [View Controller Scene] → [Tab View Controller]
                             (with Container View)
于 2018-10-03T13:17:03.870 に答える