簡體   English   中英

自定義NSTableCellView

[英]Custom NSTableCellView

我想用海關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結果為空,或者與我使用以下方法初始化數組的對象的數量相同:

您創建的視圖似乎沒有尺寸。 您可以嘗試替換視圖初始化,並使用initWithFrame代替init

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

另外,您可以嘗試在viewForTableColumn方法上成名。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM