NSView в NSCell - PullRequest
       48

NSView в NSCell

0 голосов
/ 23 мая 2011

Я много об этом читал, но не могу заставить его работать, у меня есть пользовательский NSCell с этим кодом

#import "ServiceTableCell.h"
@implementation ServiceTableCell

-(void)drawWithFrame:(NSRect)cellFrame inView:(NSView *)controlView {
    NSLog(@"I'm being called");
    NSView *newview = [[NSView alloc] initWithFrame:cellFrame];
    NSImage *image = [NSImage imageNamed:@"bg.png"];
    NSRect imagesize;
    NSImageView *IMV = [[NSImageView alloc] initWithFrame:imagesize];
    [IMV setImage:image];
    [newview addSubview:IMV];
    [controlView addSubview:newview];
}

А это мой источник данных NSTableView:

- (long)numberOfRowsInTableView:(NSTableView *)tableView {
    return 3;
}

- (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(long)row
{
    return [[ServiceTableCell alloc] initTextCell:@"dd"];
}

Как я понимаю, drawwithframe ... вызывается, когда ячейка инициализируется, но никогда не вызывается, так что мне не хватает?

Ответы [ 2 ]

0 голосов
/ 23 мая 2011

Таким образом, благодаря ответу @puzzle и немного более тщательному ответу было установить мой подкласс NSCell в качестве основной ячейки в InterfaceBuilder, затем вызывался метод и, как он сказал, в tableView: objectValueForTableColumn: row: мне нужно было вернуть данные и затем нарисовать их.

0 голосов
/ 23 мая 2011

Метод tableView: objectValueForTableColumn: row: должен возвращать значение объекта, а не ячейку.

Обратите внимание, что NSTableView существенно отличается от UITableView , с которым вы, возможно, знакомы.Например, источник данных не возвращает ячейки, заполненные данными, но возвращает данные.И тип ячейки в NSTableView устанавливается для каждого столбца, вы не можете иметь разные типы ячеек в одном столбце (ну, технически это не совсем так, вы можете иметь разные ячейки через - [NSTableColumn dataCellForRow:]).

...