Чтение массива в NSDictionary в подпредставлениях UITableViewCell

Я пытаюсь прочитать приведенный ниже словарь 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>

person L-1987    schedule 31.08.2011    source источник


Ответы (1)


Загадка, почему этот код вообще работает. Я уверен, что вы публикуете только частичный код.

  1. UILabel *label = (UILabel *)cell; создаст указатель на точно такой же элемент cell и перезапишет все, что там есть.
  2. Если dictionary равно nil, то [dictionary objectForKey:@"ArrayKey"] должно вызвать сбой.
  3. id key должно быть NSString *key, чтобы назначить его label.text.
  4. Вы нигде не добавляете метку в качестве подвида.

Вам нужно как минимум [cell.contentView addSubView:label];.

person Mundi    schedule 31.08.2011
comment
Вы правы, это только частично, и я супер новичок в этом. Я надеялся на помощь в добавлении подвида. - person L-1987; 01.09.2011