单击按钮,使用新对象填充NSTableView

时间:2016-01-13 03:16:45

标签: objective-c cocoa nstableview

我试图通过单击按钮使用自定义对象填充NSTableView。我的自定义类只有NSString属性:titlevolume。我定制了init方法来创建一个对象并将它添加到我的数组中,该数组连接到我的表视图。然后在我的按钮的方法,我让它创建另一个对象,并将其添加到数组。当我运行程序时,init方法中的对象确实正确显示。但是,当我点击我的按钮时,我什么都没得到。

以下是我的头文件的代码:

#import <Cocoa/Cocoa.h>

@interface AppDelegate : NSObject <NSApplicationDelegate, NSTableViewDataSource>{
    NSMutableArray *_myArray;}

@property (weak) IBOutlet NSTableView *tableView;

- (IBAction)button:(id)sender;

@end

这是我的实施:

#import "AppDelegate.h"
#import "trade.h"

@interface AppDelegate ()

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

@implementation AppDelegate


-(id)init{
    self = [super init];
    if (self){
        _myArray = [[NSMutableArray alloc]init];
        trade *firstTrade = [[trade alloc]init];
        [firstTrade setTitle:@"Trade One"];
        [firstTrade setVolume:@"Volume 01"];
        [_myArray addObject:firstTrade];}
    return self;}

- (IBAction)button:(id)sender {
    trade *secondTrade = [[trade alloc]init];
    [secondTrade setTitle:@"Trade two"];
    [secondTrade setVolume:@"Volume 02"];
    [_myArray addObject:secondTrade];
    [_tableView reloadData];}

-(NSInteger)numberOfRowsInTableView:(NSTableView *)tableView{
    return _myArray.count;}

-(id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row{
    if ([tableColumn.identifier isEqualToString:@"Title"]){
        trade *item = [_myArray objectAtIndex:row];
        return item.title;
    }else{
        trade *item = [_myArray objectAtIndex:row];
        return item.volume;}}

@end

我不知道我在这里做错了什么,因为我在init方法中所做的与使用button方法完全相同。任何帮助是极大的赞赏。以下是我运行程序后的程序图片:

tableView program

正如您所见,我的第一个对象出现在表格视图中,但不是第二个对象。

在查看这个项目时,我复制了[_tableView reloadData];行,并在第二行上设置了一个断点,这样我就可以看到第一个调用之后发生了什么。我注意到的一件事是_myArray现在在点击按钮后包含2个对象。

但是,当我查看_tableView时,它显示_myArray只包含1个对象。实际上如何添加对象但表格视图只有1?

以下是参考图片:Debug

0 个答案:

没有答案