NSTableView
のインスタンスは、UITableView
のインスタンスとは異なる動作をします。基本的にOS Xのスクロール可能なテーブルビューにはNSScrollView
のインスタンスがあり、ドキュメントビューとしてNSTableView
のインスタンスが含まれています。
これらの2つのクラスは、テーブルの一部ではないビューやスクロールビューを構成するクラスを使用して、彼らが必要と-されますが、事実上すべてのテーブルビューが表示されます機構。
Apple Doc
このドキュメントビューは、スクロールビュー自体のサブビューであり、スクロールビューのクリップビュー(「文書領域」)によってクリップされます。
Hereスクロールビュー階層の説明があります。
したがって、テーブルビュー自体は非スクロールビューです。そのサイズはコンテンツ(行数)から自動的に採用されます。必要なものと必要なものすべてが自動的に採用されます。
その階層のうち、テーブルビュー「操作」:親ビューなしに単一のテーブルビューを使用し
は、したがって、あなたの目標を取得するための2つの方法があります。これはではありません。テーブルビューをウィンドウに置くと、IBで何が得られますか?手動で行うか、コード内にテーブルビューを構築する必要があります。
autolayoutを使用して、親スクロールビューをテーブルビューにリサイズします。
私は、スクロールしてクリップするものがない場合は、テーブルビューの周りにクリップビューを持つスクロールビューを持つ理由がわからないので、最初のアプローチが好きです。しかし、2番目のアプローチもうまくいくはずです。
質問がある場合は、コメントとして追加してください。ここで
は一例です:
私は私はあなたがIBから得るもの、(その手段が「テーブルビュー」を入れて、それがより良い説明
http://sendvid.com/0lu0tgda?secret=d7b751f9-a3e9-4cd1-9865-20884b0bd6c8
のためにそれのビデオを作りましたテーブルが内部にあるスクロールビュー階層)をウィンドウに挿入し、左側に配置します。私は簡単な挿入と削除を得るためにいくつかのバインディングを行いました。ちょうど普通のもの。
それから私は、そのテーブルビューにスクロールビューを交換する、方法があります:
- (IBAction)replaceView:(id)sender
{
// Exchange the view
NSView *contentView = self.scrollView.superview;
NSTableView *tableView = self.tableView;
[contentView addSubview:self.tableView]; // Isolate the table view and make it the new subview
NSRect frame;
frame.origin = self.scrollView.frame.origin; // Take the location from the scroll view
frame.size = tableView.frame.size; // Take the table views size
tableView.frame = frame;
[self.scrollView removeFromSuperview]; // Remove the meaningless scroll view
// Size the window to the table view
NSWindow *window = contentView.window;
NSRect contentFrame = contentView.frame;
contentFrame.size.height = frame.size.height;
NSRect windowFrame = window.frame;
windowFrame.size.height = [window frameRectForContentRect:contentFrame].size.height;
[window setFrame:windowFrame display:YES];
// Set constraints to make the window resizing, when table view resizes
[contentView addConstraints:
[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[tableView]|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(tableView)]];
}
うん、あなたは多くの方向にそれを美化することができます。しかし、あなたがしなければならないことと使用するツールを実証するだけです。
質問が分かりません。 – Droppy
@Droppy on iOSのテーブルビューでは、テーブルビューに十分なコンテンツがない場合、セパレータ行を含む空の行が表示されます。これを防ぐための通常のトリックは、フッタービューを設定することです。 – Andy
[self.tableView sizeToFit]を使用します。 viewDidAppearで –