ビューベースのNSTableViewのセルとしてカスタムビューを使用すると、カスタムビューはテーブルの行の多少下になります。クリックすると、要素(テキストフィールドなど)のカスタム表示に影響する代わりに、表の行が選択(強調表示)されました。私はテキストフィールドを選択するためにreclickする必要があります。NSTableViewでテーブル行の上にカスタムビューセルを表示するにはどうすればいいですか?
- (NSView*)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {
NSLog(@"We are creating views!");
NSTableCellView *newView;
newView = [tableView makeViewWithIdentifier:@"PostCell" owner:self];
NSTextField *newTextField = [[NSTextField alloc] init];
[newView addSubview:newTextField];
return newView;
}
IはNSTableView - Disable Row Selectionに応じて、行選択を無効にすると、何も選択しませんでした。
- (BOOL)selectionShouldChangeInTableView:(NSTableView *)tableView {
return NO;
}
しかし、私はまだテキストフィールドを直接選択することはできません。さらに悪いことに、私はマウスでそれを選択することすらできません。キーボードのtab
のみが機能します。
それ以上の何かがあるように思われます。しかし、それはインターフェイスビルダーに表示される "テーブルの列"ですか?または、他の何か?
どうすればこの問題を解決できますか?
どのようにUITableViewCellを初期化しますか? 'cell.contentView = customView'?もしそうなら、ビューを '[cell.contentView addSubview:customView]' – blld
@AurélienBouillandの代わりに追加することを考慮する必要があります。そのビュービルダーのカスタムビューをテーブルの列の下にドラッグし、クラスを自分のビューに設定しますクラス、 'NSTableCellView * newView; newView = [テーブルビューmakeViewWithIdentifier:@ "PostCell" owner:self]; '; – Colliot
@AurélienBouilland、その他の詳細については、[他のビューで呼び出されたときにInterface Builderで作成されたカスタムビューがレンダリングされない]を参照してください(http://stackoverflow.com/questions/33329280/custom-view-created-with-interface-builder -does-not-render-when-called-other)。 – Colliot