gpt4 book ai didi

cocoa - 当 NSTableView 的数据源发生变化时,如何更新它?

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

我正在与 Cocoa Planning For Mac OS X(一本很棒的书)一起工作。本书提供的练习之一是构建一个简单的待办事项程序。 UI 具有 TableView 、用于输入新项目的文本字段以及用于将新项目添加到表中的“添加”按钮。

在后端,我有一个 Controller ,它是我的 NSTableView 的数据源和委托(delegate)。 Controller 还实现了由“添加”按钮调用的 IBAction 方法。它包含一个 NSMutableArray 来保存待办事项列表项。单击按钮时,操作方法会正确触发,并将新字符串添加到可变数组中。但是,我的数据源方法没有被正确调用。它们在这里:

- (NSInteger)numberOfRowsInTableView:(NSTableView *)aTableView { NSLog(@"调用 numberOfRowsInTableView: %d", [todoList count]); 返回[待办事项列表计数]; }

- (id)tableView:(NSTableView *)aTableView
objectValueForTableColumn:(NSTableColumn *)aTableColumn
row:(NSInteger)rowIndex {
NSLog(@"Returning %@ to be displayed", [todoList objectAtIndex:rowIndex]);
return [todoList objectAtIndex:rowIndex];
}

问题就在这里。 -numberOfRowsInTableView 仅在应用程序首次启动时调用,而不是每次我向数组添加新内容时调用。 -objectValueForTableColumn 根本不会被调用。我认为这是因为 Cocoa 足够聪明,当没有东西可画时不会调用这个方法。我是否需要调用一些方法来让 TableView 知道它的数据源已更改,并且它应该重新绘制自己?

最佳答案

-[NSTableView reloadData];

参见NSTableView API reference

关于cocoa - 当 NSTableView 的数据源发生变化时,如何更新它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1758525/

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