NSTableView:新行中没有文本

时间:2011-11-19 06:02:08

标签: cocoa nstableview rows

我写了一个方法来向NSTableView添加新行。它添加了新行,但是没有文本就是空的。 这是代码:

AppDelegate.h

#import <Cocoa/Cocoa.h>

@interface AppDelegate : NSObject <NSApplicationDelegate>
{    
    IBOutlet NSButton *addDreamButton;
    IBOutlet NSButton *removeDreamButton;
    IBOutlet NSTextField *dreamField;
    IBOutlet NSTableView *dreamTable;
    IBOutlet NSMutableArray *dreamlist;    
    IBOutlet NSTextField *testf;
}

- (IBAction)addDream:(id)sender;
- (IBAction)deleteDream:(id)sender;

@property (assign) IBOutlet NSWindow *window;
@end

AppDelegate.m

#import "AppDelegate.h"

@implementation AppDelegate

@synthesize window = _window;

-(int) numberOfRowsInTableView: (NSTableView *) tableView
{
    return [dreamlist count];
}

-(void) dreamTable: (NSTableView *) tableview
    setObjectValue:(id)anObject
    objectValueForTableColumn: (NSTableColumn *) tablecolumn
    row:(int) rowIndex
{ 
    [dreamlist replaceObjectAtIndex:rowIndex withObject:anObject];
}

- (IBAction)addDream:(id)sender
{
    NSString* thedream = dreamField.stringValue;
    [dreamlist addObject: thedream];
    [dreamTable reloadData];
}

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

AppDelegate与TableView绑定为数据源。

所以,当我按下“添加”按钮时,表格中出现空行(我得到文本的文本字段不为空;我调试并看到MutableArray包含正确的字符串)。

1 个答案:

答案 0 :(得分:2)

您的表视图数据源需要实现此方法:

- (id)tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex
{
    return [dreamlist objectAtIndex:rowIndex];
}