Sono nuovo al cacao e mi sento frustrato, ho passato quasi la metà del giorno a cercare di scoprire come aggiungere una NSView a una cella NSTableView, ma non ho trovato un bella guida che può aiutarmi a fare quello che vorrei realizzare, forse qualcuno può dare un'occhiata a quello che ho provato e mi dica il motivo per cui non funziona e come ho potuto farlo funzionare ...Cocoa NSView nella cella NSTableView
-(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;
}
Quello che mi piacerebbe ottenere è avere due NSTextField uno sopra l'altro e la cella della tabella per avere uno sfondo personalizzato. Quanto sopra mi sta solo cercando di ottenere uno NSTextField a lavorare, ma senza fortuna ...
Il NSTableView si crea a livello di codice:
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];
Sono un po 'confuso cosa mettere per la makeViewWithIdentifier:
, Ho visto il video WWDC 2011 su NSTableViews ma non ne sono ancora sicuro.
Se avete bisogno di ulteriori informazioni si prega di chiedere
Grazie
EDIT Dopo la prima risposta:
-(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;
}
Tuttavia ancora non funziona?
L'ho aggiunto, ma non funziona ancora ... –
solo controllando ... hai implementato gli altri metodi? :: https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/Protocols/NSTableDataSource_Protocol/Reference/Reference.html –
Ho implementato il '- (NSInteger) numberOfRowsInTableView: (NSTableView *) aTableView' per quanto ne so è l'unico obbligatorio ... –