3

を持つ単一の列NSTableView(ビューベース)がありTextFieldます。自動レイアウトと IB を使用しています。ウィンドウ内のほとんどのビュー、特にテーブルはサイズ変更可能です。属性付きのテキストを TextField に入れています。アプリケーションが (IB で指定されているように) TextField の幅以下のテーブル幅で開始した場合、すべてがうまく機能します。一方、最初に表示されるテーブルの幅が広すぎる場合は、TextField が小さすぎて、テキストが折り返されて左側のスペースが大きくなります。テーブルのサイズを変更すると、アプリケーションが再起動されるまで TextField の幅が自動的に修正されます。

tableView viewForTableColumn 内で、標準の makeViewWithIdentifier を使用して NSTableCellView を取得します。フレームサイズを大きくしようとしましたが、効果がありませんでした。フレームはペン先の値と一致します (予想通り)。唯一の制約はテーブル セル ビューにあり、テーブルのサイズ変更に伴って強制的に拡大および縮小されますが、ユーザーがテーブルの幅を縮小した後でのみです。

テーブルを保持する Bordered Scroll View で何かが起こっていますか? NSTableCellView の幅を調整するように強制する場所はどこですか?

ユーザーが手動でサイズ変更する前: ユーザーがサイズ変更する前に

サイズ変更後: ユーザーのサイズ変更後

ありがとう...

4

6 に答える 6

0

有益な提案をしてくれた@macreneに感謝します。私のデバッグのほとんどは、実際にそうであるように思われる、障害のあるペン先を指し続けていました。

「問題はわかりました」とは言えませんが、アプリケーションは動作しています。IB と同じビューに 2 つのテーブルがあることには問題があるようです。テーブルが 1 つだけのテスト ケース アプリケーションを作成しましたが、すべてが機能していました。しかし、IB でテーブルのサイズを変更しようとすると、「奇妙な点」に気付きました。時々、テーブルが見えない隅に移動することがあります。

IB では同じ制約を入力できないため、アプリケーションに戻って、制約をテスト ケースと一致させようとした後、問題のあるテーブルを削除しました。サイズインスペクターを使用してテーブルを配置する必要がありました。私はすべての制約をクリアし、それをいじり続けました。私はついにどういうわけか制約を入力しました。

階層は次のとおりです。

意見
  枠付きスクロール ビュー - テーブル ビュー
    クリップ ビュー
      テーブル ビュー
        表の列
          テーブル セル ビュー (ここで制約が必要)
            テキスト フィールド - テーブル ビュー セル (ここで制約が必要)
            テキスト フィールド セル - テキスト セル

私の推測では、同じビューに 2 つのテーブルがあると、IB は混乱します。マウスでテーブルのサイズと位置を調整すると、確かに問題があります。

にも問題があったと思いますautoresizingMask。nib の xml バージョンを編集して、これらの設定を一致させようとしました。私は何かを逃し、ついに忍耐力を失いました。

于 2014-03-06T23:27:12.613 に答える
0

tableview のセルの幅は、tableColumn の幅、行の高さのそれぞれの高さによって定義されます。特定のセルだけを変更することはできません。Scrollview <-> Tableview これらは一緒に使用されますが、タスクが大きく異なります。テーブルビューは、window = scrollview に表示される画像と考えてください。ウィンドウに対して画像が大きすぎる場合は、スクロールを使用して、見えない部分を見えるようにすることができます。テーブルビューはしばしば大きすぎます...

于 2014-03-05T10:11:45.407 に答える
0

私も同じ問題に直面しました。

私にとっての解決策はWidthサイズインスペクターのテーブル列をテーブルビューと同じにするWidthことでした。これは、何らかの理由で、私の場合は 4pt 小さかったためです。

于 2018-03-08T14:50:12.933 に答える
0

XCode 12.5で同様の問題に遭遇しました。以前のバージョンの Xcode でビルドされた xib にあった NSTableView のセルは、変更が NSTableView とリモートで関係がない場合でも、xib に変更が加えられた後、列幅の ~1/2 しか埋められませんでした。 . 作業中の xib とわずかに変更されたもの (別のコントロールの 1 つの寸法を 1 ピクセルだけ変更) との差分は、ドキュメント全体で 27 の変更を示し、ほとんどが xib 全体でわずかなピクセルの変更でした。制約をいじっても、これは修正されません。運が良かったので、XCode の新しいバージョンで xib が変更されたときに、属性パネルの TableView の「スタイル」が「自動」に変更されたことを偶然発見しました。スタイルを「全幅」に変更すると、セルが列全体に表示されます。

于 2022-01-06T18:57:17.843 に答える