- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在阅读由 Big Nerd Ranch 提供的 Mac OSX Cocoa 书的第三版,并且我正在编辑我的程序以包含表格 View 。这里是 AppController.m 文件中的代码,我必须在其中实现 TableView 所需的协议(protocol)方法:
-(id)init{
self = [super init];
voiceArray = [NSSpeechSynthesizer availableVoices];
speechSynth = [[NSSpeechSynthesizer alloc] initWithVoice:nil];
[speechSynth setDelegate:self];
return self;
}
-(int)numberOfRowsInTableView:(NSTableView *)tv{
NSLog(@"Getting number of rows in table view: %lu", [voiceArray count]);
return [voiceArray count];
}
-(id)tableView:(NSTableView *)tv objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row{
NSString *v = [voiceArray objectAtIndex:row];
NSDictionary *dict = [NSSpeechSynthesizer attributesForVoice:v];
NSLog(@"Voice Name %@", [dict objectForKey:NSVoiceName]);
return [dict objectForKey:NSVoiceName];
}
-(void)tableViewSelectionDidChange:(NSNotification *)notification{
int row = [tableView selectedRow];
NSLog(@"row selected %d", row);
if(row == 1){
return;
}
NSString *selectedVoice = [voiceArray objectAtIndex:row];
[speechSynth setVoice:selectedVoice];
NSLog(@"new voice %@ ", selectedVoice);
}
当应用程序首次加载时,我得到以下输出:
2012-05-27 15:02:29.040 Speakline[42836:f03] Getting number of rows in table view: 24
2012-05-27 15:02:29.042 Speakline[42836:f03] row selected 2
2012-05-27 15:02:29.043 Speakline[42836:f03] new voice com.apple.speech.synthesis.voice.Alex 2012-05-27 15:02:29.162 Speakline[42836:f03] Voice Name Agnes
2012-05-27 15:02:29.163 Speakline[42836:f03] Voice Name Albert
我想确保我完全理解这里发生的事情。为了做到这一点,我有几个问题。
看起来 numberOfRowsInTableView:
方法是在 init
方法之后自动调用的。这是正确的吗?
objectValueForTableColumn:
多久被调用一次?什么事件促使该方法被调用?另外,在代码中,return
语句让我很困惑。这个返回值到底去了哪里呢?
附带说明一下,他们希望我通过 Control+单击(通过连接面板)来连接 Outlet 和 AppController,并以这种方式链接它们。如果不这样做,有什么替代方案可以将委托(delegate)和数据源连接到不同类型的 View ?我假设在 Controller 头文件中添加 NSTableViewDelegate
可能是一种方法。如果您可以选择控制+单击将所有 View 连接到 socket 等,而不是以编程方式进行全部设置,此时这只是一个偏好问题吗?在我看来,为了理解正在发生的事情,最好自己编写代码。
最佳答案
1) numberOfRowsInTableView 和 objectValueForTableColumn:Row: 在 Nib 取消归档后不久就会被调用(我不确定事情的确切顺序),因此 TableView 可以填充数据。
2) 表的加载、重新加载或添加新数据以及滚动将导致 objectValueForTableColumn:row: 被调用(由 TableView )。填充的每一行都会调用它。该值进入 TableView ,这就是它获取数据的方式。
3) 连接委托(delegate)的另一种方法是使用 setDelegate: 在代码中执行此操作,但将 NSTableViewDelegate 放入 .h 文件中并不能做到这一点 - 这只是向编译器 promise 您将实现部分或全部代表消息。
关于objective-c - objectValueForTableColumn : get called? 何时出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10776932/
关于outlineView:objectValueForTableColumn:byItem:数据源方法,文档中有注释说: While this method is marked as @option
我有一个带有单列的 NSTableView,它通过绑定(bind)到核心数据实体的 NSArrayController 获取其数据。数据源工作得很好,我已经能够通过实现这些方法来进行拖放工作 –num
我目前正在阅读由 Big Nerd Ranch 提供的 Mac OSX Cocoa 书的第三版,并且我正在编辑我的程序以包含表格 View 。这里是 AppController.m 文件中的代码,我必
我正在尝试以编程方式设置 NSTableView(我确实需要避免使用 IB),并且我找到的所有示例都解释了如何使用界面构建来执行此操作。我创建了一个 Controller 类,它实现了 tableVi
OSX 上的 Cocoa 编程新手。来自iOS编程。看起来 NSTableView 编程与 UITableView 编程类似。因此,我正在尝试实现 NSTableViewDataSource 协议(p
我正在尝试为新程序创建源列表,但在使用基于 View 的 NSOutlineView 时遇到了一些小问题。我的代码使用基于单元格的 NSOutlineView 工作正常,所以我对发生的事情有点困惑。
在尝试创建基于 View 的表时,它不断调用 objectValueForTableColumn 函数而不是 viewForTableColumn。 我已在其设置中将 TableView 设置为“基于
我可以从数据源方法中获取当前列索引吗: -tableView:objectValueForTableColumn:row: 最佳答案 您可以在 NSTableView 列中搜索给定的 NSTableC
在NSTableViewDataSource ,概述表明 tableView:objectValueForTableColumn:row: 是“必需的”。 紧接着,它说 tableView:setOb
知道哪一行很简单,因为我得到了 rowIndex 参数,但是如何找到哪一列正在调用您的方法? 最佳答案 您将在 tableColumn 参数中传递一个 NSTableColumn 对象。您可以使用其i
我有这个代码: - (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableCol
我是一名优秀的程序员,十分优秀!