gpt4 book ai didi

objective-c - NSTableView 没有显示我的数据。为什么会发生这种情况?

转载 作者:行者123 更新时间:2023-12-03 17:32:52 26 4
gpt4 key购买 nike

我正在制作一个“简单”的待办事项列表项目,但在路上遇到了一些坎坷。问题是我的 NSTableView 没有显示 NSMutableArray“myArray”中的数据,我不知道为什么会这样。有人可以指出我的错误吗?

/*
IBOutlet NSTextField *textField;
IBOutlet NSTabView *tableView;
IBOutlet NSButton *button;
NSMutableArray *myArray;
*/

#import "AppController.h"


@implementation AppController


-(IBAction)addNewItem:(id)sender
{

NSString *myString = [textField stringValue];

NSLog(@"my stirng is %@",myString);
myArray = [[NSMutableArray alloc] initWithCapacity:100];
[myArray addObject:myString];

}

- (int)numberOfRowsInTableView:(NSTableView *)aTableView
{
return [myArray count];
}
- (id)tableView:(NSTableView *)aTableView
objectValueForTableColumn:(NSTableColumn *)aTableColumn
row:(int)rowIndex
{

return [myArray objectAtIndex:rowIndex];
}

-(id)init
{
[super init];
[tableView setDataSource:self];
[tableView setDelegate:self];

NSLog(@"init");
return self;
}

@end

最佳答案

问题是在您的 -init 方法中,您的 tableView 变量仍然为零。加载 nib 文件时,它首先创建并初始化 nib 中声明的所有对象,然后才在它们之间建立连接(导出、绑定(bind)、操作)。您的任何依赖于所设置的各种操作、导出或绑定(bind)的初始化代码都需要放置在 -(void)awakeFromNib 方法中,而不是 -init 方法中。您还可以直接在 Interface Builder 中设置 TableView 的数据源和委托(delegate)导出,只需在主 nib 窗口中从 tableView 控制拖动到 AppController,然后依次选择每个导出即可。

此外,每当您更改基础数据时,您都需要调用[tableView reloadData]以使tableView反射(reflect)这些更改。在您的情况下,您需要在 -addNewItem: 方法中调用它。因此,您的代码应如下所示:

@implementation AppController
- (id)init
{
if (nil == (self = [super init])) return nil;
myArray = [[NSMutableArray alloc] init];
return self;
}
- (void)dealloc
{
[myArray release];
[super dealloc];
}
- (void)awakeFromNib
{
// assuming you're not just setting up these outlets in IB
[tableView setDataSource:self];
[tableView setDelegate:self];
}
-(IBAction)addNewItem:(id)sender
{
[myArray addObject:[textField stringValue]];
[tableView reloadData];
}
// data source methods same as in your code
@end

关于objective-c - NSTableView 没有显示我的数据。为什么会发生这种情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2695526/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com