Kann nicht NSTableView Daten anzuzeigen
-
12-09-2019 - |
Frage
Ich sehe es viele Fragen zu diesem Thema, aber nichts hat mir geholfen, diese Arbeit zu bekommen. Ich habe eine Spitze mit einer NSTableView mit drei Spalten (mit den richtigen Kennungen festgelegt) und eine Klasse mit dem Namen ShortcutsTableController. In der Spitze habe ich eine NSObject mit Klassenwert ShortcutsTableController. Ich verbinden auch die NSTableView meines Controller, wie ich in der Regel tun.
Dies ist Header ShortcutsTableController.h
.
#import <Cocoa/Cocoa.h>
@interface ShortcutsTableController : NSObject <NSTableViewDataSource> {
IBOutlet NSTableView *shortcutsTable;
NSMutableArray *shortcutsList;
}
- (int) numberOfRowsInTableView: (NSTableView*) tableView;
- (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(int)row;
@property (assign) IBOutlet NSTableView *shortcutsTable;
- (void)setUpTable;
@end
Und das ist die Implementierungsdatei ShortcutsTableController.m
.
#import "ShortcutsTableController.h"
@implementation ShortcutsTableController
@synthesize shortcutsTable;
- (void)setUpTable {
shortcutsList = [[NSMutableArray alloc] init];
NSDictionary *dict1 = [NSDictionary dictionaryWithObjectsAndKeys:
@"blabla", @"nameColumn",
@"Bla bla bla", @"shortcutColumn",
@"Ribla", @"actionColumn", nil];
[shortcutsList addObject:dict1];
[shortcutsTable setDataSource:self];
[shortcutsTable reloadData];
}
-(int) numberOfRowsInTableView: (NSTableView *) tableView {
return [shortcutsList count];
}
- (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(int)row {
if (row != -1)
return [[shortcutsList objectAtIndex:row] objectForKey:[tableColumn identifier]];
return nil;
}
@end
Aber wenn ich versuche, nichts zu bauen erscheint im NSTableView. Keine Fehler, keine Warnungen. Beachten Sie, dass ich setUpTable innerhalb der Delegierten Klasse Methode awakeFromNib
nennen.
Gibt es etwas, was ich falsch mache? Vielen Dank für Ihre Hilfe.
-Albé
UPDATE. Hinzugefügt Linien @property (assign) IBOutlet NSTableView *shortcutsTable;
in Kopf- und @synthesize shortcutsTable;
bei der Umsetzung. Nichts verändert sich. : (
Lösung
Basierend auf den Ergebnissen Ihrer NSLog
Anweisung in setUpTable:
, haben Sie nicht Ihre IBOutlet einrichten. Vielleicht haben Sie, aber es wurde irgendwie verloren (rückgängig zu machen, überschreiben, versehentlich gelöscht es, etc). Sie müssen zu Interface Builder zurück zu gehen und wieder herzustellen, die Verbindung zwischen ShortcutsTableController
und den NSTableView
im xib.
Andere Tipps
Wie viele Objekte in shortcutsList?
Versuchen Sie, durch das Wörterbuch anderswo zu wiederholen, aber die Datenquelle Methoden, um zu sehen, ob seine Daten korrekt angezeigt werden.
Außerdem haben Sie den Controller als Datenquelle der Tabelle in IB oder manuell in Ihrem awakeFromNib eingestellt?
Sie rufen [Tabelle reload], wenn Sie shortcutlist aktualisieren?
Versuchen Sie das Hinzufügen
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
}
Ihren Code, wobei 1 die Anzahl der Abschnitte, die Sie in Ihrer Tabelle haben