代码之家  ›  专栏  ›  技术社区  ›  xaddict

如何将绑定数组划分为自动填充表的部分?

  •  0
  • xaddict  · 技术社区  · 16 年前

    我使用此“教程”将名为“collection”的数组绑定到界面上的nstableview: http://www.cocoadev.com/index.pl?NSArrayController

    界面构建器的东西并不是那么难。当我试图将数组中的数据实际显示到视图中时,这会变得很困难。

    在我的.h文件中:

    @interface MyDocument : NSDocument
    {
        NSMutableArray *collection;
        //other variables
    }
    

    在我的.m文件中:

    @implementation MyDocument
    @synthesize collection;
         //quite some functions
    
         inside one function (that works):
         [collection addObject:fileName];
    
         //some other functions
    
         inside the init function:
         collection = [[NSMutableArray alloc] init];
    

    现在我猜数组与接口和 表视图 当然,tableview及其列需要以特定的方式填充。现在添加项目后没有显示任何内容。具有 集合addobject:文件名 功能

    是否应将子数组创建为一个项目,并填充字段?以及如何将这些值/字段绑定到特定列。(字段是' 艺术家 “,” 标题 “等”

    我已经将接口生成器中的每一列绑定到 阵列控制器 具有 控制器密钥 安排对象 模型密钥路径 艺术家 “,” 标题 等等

    请保持简单的解释,因为我慢慢开始认为我永远不会得到这个阵列控制器的事情…objective-c看起来不那么难,但是它需要的绑定是我得不到的。对于新手来说,苹果的例子是不够的

    2 回复  |  直到 10 年前
        1
  •  2
  •   Marc Charbonneau    16 年前

    通常,要填充数据,您需要为每一行使用字典(键将是keypath,并对数据进行对象化),甚至更好,创建一个类来表示数据并为每一行创建一个新实例。绑定可能有点棘手(如果您是新的COCOA首先使用的数据源方法),但看看 this tutorial 以及 examples here . 它们都包含可以下载的示例,并可以准确地检查如何在接口生成器中建立绑定。

        2
  •  1
  •   Peter Hosey    16 年前

    仅仅改变数组并不能说明数组已经改变了。您需要发送变异的kvo通知。

    正确的方法是实现属性的访问器方法,然后调用自己的访问器。在这种情况下,您需要实现 insertObjectInCollection:atIndex: 并将数组的长度作为索引( [self insertObjectIntoCollection:fileName atIndex:[self countOfCollection] ,在执行 countOfCollection )

    当实现访问器时,当一个对象绑定到属性时,cocoa将用kvo magic包装访问器,kvomagic将发送适当的变异通知。