0

我正在尝试将下面的 plist 字典读入 UITableView 的单元格。我想为 ArrayKey 表示的数组中包含的每个字符串创建一个子视图,例如:

Row1: | myString1 |
Row2: | myString2 || myString3 |

我已经使用快速枚举来读取字典,但我只能成功读取每个数组中的第一个字符串:

    CGFloat constant = 0;

    for (NSArray key in [dictionary objectForKey:@"ArrayKey"]) {


        UILabel *label = (UILabel *)cell; 
        label.text = (NSString *)key;
        label.frame = CGRectMake(0 + constant, 0, 30, 30);

        constant = 20 + CGRectGetMaxX(label.frame);
        }

我错过了子视图。我很困惑为什么如果我添加一个快速枚举的 NSLog,输出会显示数组中的所有字符串,但我只能显示第一个(即 myString1 在一行,myString2 在第二行,没有 myString3)。

<dict>
    <key>TitleKey</key>
    <string>myTitle1</string>
    <key>ArrayKey</key>
    <array>
        <string>myString1</string>
    </array>
</dict>
<dict>
    <key>TitleKey</key>
    <string>myTitle2</string>
    <key>ArrayKey</key>
    <array>
        <string>myString2</string>
        <string>myString3</string>
    </array>
</dict>
4

1 回答 1

0

令人费解的是为什么这段代码能正常工作。我确定您只发布部分代码。

  1. UILabel *label = (UILabel *)cell;将创建一个指向完全相同的项目的指针cell并覆盖那里的任何内容。
  2. 如果dictionarynil[dictionary objectForKey:@"ArrayKey"]必须导致崩溃。
  3. id key应该是NSString *key为了将其分配给 label.text.
  4. 您没有在任何地方添加标签作为子视图。

你至少需要一个[cell.contentView addSubView:label];.

于 2011-08-31T19:29:56.637 回答