【问题标题】:Adding data to a scrollview/table将数据添加到滚动视图/表格
【发布时间】:2011-08-11 20:23:40
【问题描述】:

我有一个包含 NSTableView 的 NSCrollView。它有 3 列和 4 行。我有 4 个 NSString,其中的内容需要复制到滚动视图中。

使用 Xcode 4 我尝试连接表格或 NSTextFieldCell,然后通过

添加文本
[_Cell1 setStringValue:MyString]; 

但是什么也没发生。它没有得到更新。

有什么办法吗? 谢谢。

编辑:

我发现the following answer 有一个类似的问题。我仍然很困惑,但在阅读了 Apple 关于绑定的示例后,我只能说这 没有任何意义,要实现如此简单的事情需要这么多代码。这就是一切都是对象和一般 OOP 的问题。

有任何简单示例吗?我什至不知道如何开始设置它或连接你需要连接的大量事物以开始使用它

【问题讨论】:

    标签: objective-c xcode cocoa macos


    【解决方案1】:

    您应该使用 NSTableViewDelegate。这是 NSTableView 调用的一组方法来获取它应该显示的数据。您只需要声明 tableview 的委托对象。

    Delegate Protocol

    NSTableView Tutorial

    【讨论】:

    • 谢谢,但所有这些代码只是为了在表格上显示一个字符串?有没有其他方法可以在网格中显示数据而不必为了复制字符串而声明无数行代码?
    • 当您只想显示一个字符串时,您可能应该重新考虑使用 NSTableView。
    • 不是一个字符串,而是多个字符串。每个字符串都适合列。
    • 是的,使用 NSTableViewDelegate。
    • 谢谢,但要在表格上显示一个简单的字符串,这有点过头了。 100行代码显示一个字符串?
    【解决方案2】:

    很遗憾,您不能“添加”或“设置”表格视图的内容。像大多数视图对象一样,表格视图不存储内容。它依赖于控制器在需要时提供内容。

    有两种选择:

    • 数据来源:最简单、最容易理解
    • 绑定到数组控制器:更难理解,但实现的工作量更少

    关于该主题的最佳 Apple 资源:Table View Programming Guide 中的 Populating Cell-Based Table Views。如果您遇到困难,我建议您从数据源选项开始。只需几行代码,您就可以改编该文档中的简单示例。

    要填充表格,你需要实现这两个方法:

    – numberOfRowsInTableView:
    – tableView:objectValueForTableColumn:row:
    

    要更改数据,您需要再实现一个:

    - tableView:setObjectValue:forTableColumn:row:
    

    您需要将控制器设置为界面生成器中表格视图的数据源。正确的协议是NSTableViewDataSource,而不是NSTableViewDelegate

    【讨论】:

      【解决方案3】:

      您可以使用NSArrayController 并将表列的值绑定绑定到数组控制器的排列对象。然后将要显示的值添加到数组控制器中。

      【讨论】:

      • 你有这个样本吗?或者你能给我指一个吗?我是一名 C 程序员,必须处理 obj-c 和可可,到目前为止,我不太确定我是否理解它背后的想法。谢谢!
      • 我不知道有任何示例可以显示此特定用例。但这些只是非常基本的 Cocoa 模式。 This 是一个很好的绑定资源,但官方文档始终是一个很好的起点。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-10
      相关资源
      最近更新 更多