0

我想用海关 NSTableCellView 制作一个 NSTableView,这是我到目前为止所做的:

AppDelegate.h:

#import <Cocoa/Cocoa.h>
#import "TheView.h"

@interface AppDelegate : NSObject <NSApplicationDelegate, NSTableViewDataSource, NSTableViewDelegate>

@property (weak) IBOutlet NSTableView *tableView;
@property (copy) NSMutableArray *tableContent;
@property (assign) IBOutlet NSWindow *window;

-(IBAction)addRow:(id)sender;

@end

AppDelegate.m:

#import "AppDelegate.h"

@implementation AppDelegate
@synthesize tableContent;

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
    tableContent = [[NSMutableArray alloc]init];
}

-(id)init{
    self = [super init];

    if (self) {
        tableContent = [[NSMutableArray alloc]init];
    }
    return self;
}

-(NSInteger)numberOfRowsInTableView:(NSTableView *)tableView {
    NSLog(@"%@",tableContent); //Here tableContent is empty
    return [tableContent count];
}

- (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {
    NSView *result = [tableView makeViewWithIdentifier:tableColumn.identifier owner:self];
    TheView *view = [tableContent objectAtIndex:row];
    result = view;
    return result;
}

-(IBAction)addRow:(id)sender {
    TheView *view = [[TheView alloc]init];
    [tableContent addObject:view];
    NSLog(@"%@",tableContent); //Here tableContent result with the correct number of objects
    [_tableView reloadData];
}

但是当我尝试添加一个对象时,什么也没有发生...... TheView 是 NSTableCellView 的子类,它正在绘制一个简单的矩形。我当然添加了 NSTableViewDataSource 和 NSTableViewDelegate。

更新 2 在对我的代码进行进一步研究后,我发现在 中numberOfRowsInTableView,tableContent 导致为空或使用我初始化数组的对象数......

4

1 回答 1

0

您创建的视图似乎没有大小。您可以尝试替换视图初始化,并使用initWithFrame而不是init

[[TheView alloc]initWithFrame:CGRectMake(0, 0, 100, 20)];

另外,你可以试试成名的viewForTableColumn方法。

于 2014-03-16T18:08:43.450 回答