QuickDialog中的QDynamicDataSection

时间:2012-06-18 15:55:27

标签: objective-c quickdialog

目前,我在使用QuickDialog的QDynamicDataSection。 我想填充动态部分。当我从演示中运行以下代码时,我得到一个动态部分,其中填充了模板的几个实例,即“Something here”。但是,我希望获得“第一”和“第二”。怎么能达到这个目标?

QDynamicDataSection *section = [QDynamicDataSection new];
section.title = @"Normal: with elements";
section.bind = @"iterate:something";
section.elementTemplate = [NSDictionary dictionaryWithObjectsAndKeys:
    @"QLabelElement", @"type",
    @"Something here", @"title",
nil];
[root addSection: section];
[root bindToObject:[NSDictionary dictionaryWithObjectsAndKeys:
        [NSArray arrayWithObjects:@"first", @"second", nil], @"something",
        nil]];

使用解决方案进行编辑:

爱德华多让我走上正轨(获得了荣誉):

  1. 模板必须提供绑定
  2. 要迭代的数组元素必须是密钥编制,例如字典。 (绑定到object似乎不起作用)
  3. 以下代码按预期工作:

    QDynamicDataSection *section = [QDynamicDataSection new];
    section.title = @"Normal: with elements";
    section.bind = @"iterate:something";
    section.elementTemplate = [NSDictionary dictionaryWithObjectsAndKeys:
        @"QLabelElement", @"type",
        @"title:name", @"bind",
    nil];
    [root addSection: section];
    
    [root bindToObject:[NSDictionary dictionaryWithObjectsAndKeys:
            [NSArray arrayWithObjects:
             [NSDictionary dictionaryWithObject: @"first" forKey: @"name"],
             [NSDictionary dictionaryWithObject: @"second" forKey: @"name"], 
             nil], @"something",
            nil]];
    
    return root; 
    

    @Eduardo Scoz:我建议采用SampleDataBuilder.m中的示例代码。


    第二次修改 self的方法(参见Eduardo的评论)也有效。

1 个答案:

答案 0 :(得分:1)

“iterate”键只是迭代字典中的项目,并根据每个元素的模板创建一个新元素。它还将新项绑定到数组中的对象。

在您的情况下,您的模板未定义任何绑定,因此创建的新项目没有任何修改的值。你必须添加像@“bind”,@“title:object”这样的东西。 (对象返回绑定的实际对象,因此您不会绑定它的属性。