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. : (

War es hilfreich?

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top