Не удается получить NSTableView для отображения данных - PullRequest
0 голосов
/ 04 декабря 2009

Я вижу, что есть много вопросов по этому поводу, но ничто не помогло мне получить эту работу. У меня есть перо с NSTableView с тремя столбцами (с установленными правильными идентификаторами) и класс с именем ShortcutsTableController. В перо у меня есть NSObject со значением класса ShortcutsTableController. Я также подключил NSTableView к своему контроллеру, как обычно.

Это заголовок 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

А это файл реализации 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

Но когда я пытаюсь построить, в NSTableView ничего не появляется. Нет ошибок, нет предупреждений. Обратите внимание, что я вызываю setUpTable из метода класса делегата awakeFromNib.

Есть ли что-то, что я делаю не так? Спасибо за помощь.

-Albé

UPDATE. Добавлены строки @property (assign) IBOutlet NSTableView *shortcutsTable; в заголовке и @synthesize shortcutsTable; в реализации. Ничего не меняется (

Ответы [ 4 ]

0 голосов
/ 22 марта 2010

Попробуйте добавить

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return 1;
}

к вашему коду, где 1 - количество разделов в вашей таблице

0 голосов
/ 05 декабря 2009

На основании результатов вашего заявления NSLog в setUpTable: ваш IBOutlet не настроен. Возможно, вы сделали, но это как-то потеряно (отменить, перезаписать, случайно удалить и т. Д.). Вам нужно будет вернуться к Интерфейсному Разработчику и восстановить соединение между ShortcutsTableController и NSTableView в xib.

0 голосов
/ 05 декабря 2009

Вы вызываете [table reloadData] при обновлении shortcutList?

0 голосов
/ 04 декабря 2009

Сколько объектов в списке ярлыков?

Попробуйте перебрать словарь где-нибудь еще, кроме методов источника данных, чтобы проверить, правильно ли отображаются данные.

Кроме того, вы установили контроллер в качестве источника данных этой таблицы в IB или вручную в awakeFromNib?

...