添加NSToolbar时wakeFromNib行为不一致



我正在学习创建表视图的教程。它展示了如何定义numberOfRowsInTableViewviewForTableColumn这两个函数,以及如何将表连接到AppDelegate(dataSource和delegate(。

这个教程——正如所写的那样——运行得很好。我可以毫无疑问地看到所提供的数据。但是,后来我在窗口中添加了一个工具栏(NSToolbar(,现在应用程序不再以一致的方式运行。

在添加工具栏之前,awakeFromNib总是在numberOfRowsInTableView之前调用。这是一件好事,因为awakeFromNib是教程所说的添加表内容的地方。。。因此,如果不先完成,那么表内容将为空。

现在,在将工具栏添加到窗口后,numberOfRowsInTableView总是在awakeFromNib之前被调用!更奇怪的是,有时我会启动应用程序,它会被第二次调用。在其他发射中,它只会被调用一次。当它第二次被调用时,我会看到表数据,因为第二次调用将发生在awakeFromNib之后。但是,当它只被调用一次时,它总是在awakeFromNib之前被调用,因此表中没有显示任何内容:

应用程序启动编号 结果
1 numberOfRowsInTableViewawakeFromNib之前调用一次(未显示数据(
2 numberOfRowsInTableView被调用两次;awakeFromNib之前和之后各一次(显示数据(
3 numberOfRowsInTableView被调用两次;awakeFromNib之前和之后各一次(显示数据(
4 numberOfRowsInTableView被调用两次;awakeFromNib之前和之后各一次(显示数据(
5 numberOfRowsInTableView被调用两次;awakeFromNib之前和之后各一次(显示数据(
6 numberOfRowsInTableView被调用两次;awakeFromNib之前和之后各一次(显示数据(
7 numberOfRowsInTableView被调用两次;awakeFromNib之前和之后各一次(显示数据(
8 awakeFromNib之前调用一次numberOfRowsInTableView(未显示数据(
9 numberOfRowsInTableView被调用两次;awakeFromNib之前和之后各一次(显示数据(
10 numberOfRowsInTableView被调用两次;awakeFromNib之前和之后各一次(显示数据(
11 numberOfRowsInTableViewawakeFromNib之前调用一次(未显示数据(
12 numberOfRowsInTableViewawakeFromNib之前调用一次(未显示数据(

因此,该教程似乎让我误入歧途,因为它忽略了填充NSTableView内容的一个关键因素:初始化数据源后应始终调用reloadData

完成上述操作(在awakeFromNib结束时调用reloadData(后,无论我是否向窗口添加了工具栏,表内容总是在应用程序启动时显示。

首先,您的表视图将取决于您的数据-在这里是您的歌曲列表。因为您是从nib创建视图的,所以init数据将自动为空,因为最初没有数据。这就是你的问题所在。

每当更新数据(如insert/update(时,表视图都不会自动更新,因此需要调用方法reloadData才能更新表视图。

[tableView reloadData];

相关内容

  • 没有找到相关文章

最新更新