Ich bin neu in Kakao und ich bin frustriert, ich habe fast den halben Tag damit verbracht herauszufinden, wie man ein NSView zu einer NSTableView Zelle hinzufügen, aber ich habe kein gefunden schöne Anleitung, die mir helfen kann tun, was ich möchte, erreichen, vielleicht kann jemand einen Blick auf das, was ich habe versucht, und sagen sie mir, warum es nicht funktioniert und wie ich konnte es die Arbeit an ...Cocoa NSView in NSTableView Zelle
-(NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row{
NSTableCellView *view = [tableView makeViewWithIdentifier:@"MyView" owner:self];
NSTextField *textfield = [[NSTextField alloc]initWithFrame:NSMakeRect(0, 0, 100, 30)];
[textfield setStringValue:predictate_search[row]];
[textfield setBackgroundColor:[NSColor redColor]];
[view addSubview:textfield];
[view setNeedsDisplay:YES];
return view;
}
Was ich erreichen möchte, ist, zwei NSTextFields übereinander zu haben und die Tabellenzelle einen benutzerdefinierten Hintergrund zu haben. Das obige wird mich versuchen, nur um ein NSTextField zu arbeiten, aber ohne Glück ...
Die NSTableView wird programmatisch erstellt:
NSScrollView *scrollView = [[NSScrollView alloc]initWithFrame:bg];
[scrollView setHasVerticalScroller:YES];
[self addSubview:scrollView];
search_results = [[NSTableView alloc]initWithFrame:bg];
NSTableColumn *column = [[NSTableColumn alloc] initWithIdentifier:@"id"];
[[column headerCell] setStringValue:@"Cities"];
[column setWidth:1000.0];
[search_results addTableColumn:column];
[search_results setDelegate:(id)self];
[search_results setDataSource:(id)self];
[search_results reloadData];
[scrollView setDocumentView:search_results];
Ich bin etwas verwirrt, was für die makeViewWithIdentifier:
zu setzen, Ich habe das WWDC 2011 Video auf NSTableViews gesehen, aber ich bin mir immer noch nicht wirklich sicher.
Wenn Sie weitere Informationen wünschen, wenden Sie sich bitte
Dank
EDIT Nach dem ersten Antwort:
-(NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row{
NSTableCellView *view = [tableView makeViewWithIdentifier:[tableColumn identifier] owner:self];
if(view == nil){
NSTableCellView *view = [[NSTableCellView alloc]initWithFrame:[tableView frame]];
view.identifier = [tableColumn identifier];
}
NSTextField *textfield = [[NSTextField alloc]initWithFrame:NSMakeRect(0, 0, 100, 30)];
[textfield setStringValue:predictate_search[row]];
[textfield setBackgroundColor:[NSColor redColor]];
[view addSubview:textfield];
[view setNeedsDisplay:YES];
return view;
}
aber es funktioniert immer noch nicht?
Ich habe das hinzugefügt, aber es funktioniert immer noch nicht ... –
nur Überprüfung ... Sie haben die anderen Methoden implementiert? :: https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/Protocols/NSTableDataSource_Protocol/Reference/Reference.html –
Ich habe die '- (NSInteger) numberOfRowsInTableView implementiert: (NSTableView *) aTableView' soweit ich weiß ist es das einzige zwingend ... –