Цель C Использование 2D-массивов с cellForRowAtIndexPath - PullRequest
1 голос
/ 19 мая 2011

Мне известна основная идея использования массивов с cellForRowAtIndexPath с использованием indexPath и row, но я не уверен, что лучше всего пройти через 2D-массив.Я создал пользовательскую ячейку, которая принимает 7 разных строк в 7 держателей, и я создал двумерный массив, который имеет 3 строки по 7 строк.(3х7 2D массив).Любые предложения о том, как настроить cellForRowAtIndexPath для автоматического прохождения этого массива?

Позвольте мне перейти к более подробным сведениям.Мой многомерный массив представляет собой массив массивов, который содержит 7 строк: ("Potato", "0", "1", "2", "3", "4", "5"). Моя пользовательская ячейка настроена.с 7 подпредставлениями (они работают, я проверил это с массивом).В том же классе, в котором я создаю пользовательскую ячейку, я создал метод, который присваивает значения из тестового массива этим подпредставлениям:

- (void)setMyArray:(NSArray *)myArray
{
   NSString *name = [myArray objectAtIndex:0];
   [nameLabel setText:name];
   [name release];
   NSString *numberA = [myArray objectAtIndex:1];
   [aLabel setText:numberA];
   [numberA release];
   NSString *numberB = [myArray objectAtIndex:2];
   [bLabel setText:numberB];
   [numberB release];
   NSString *numberC = [myArray objectAtIndex:3];
   [cLabel setText:numberC];
   [numberC release];
   NSString *numberD = [myArray objectAtIndex:4];
   [dLabel setText:numberD];
   [numberD release];
   NSString *numberE = [myArray objectAtIndex:5];
   [eLabel setText:numberE];
   [numberE release];
   NSString *numberF = [myArray objectAtIndex:6];
   [fLabel setText:numberF];
   [numberF release];
}

В viewController все, что мне нужно вызвать, это:

[cell setMyArray:testList];

И это работает.Я просто не уверен, как это сделать с 2D-массивом.

1 Ответ

0 голосов
/ 19 мая 2011

Я не знаю, как именно выглядит ваш пользовательский код ячейки, но разве вы просто не сделаете:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    MyCustomCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MyCell"];
    if (cell == nil) {
       //...
    }

    [cell setMyArray:[self.myTwoDArray objectAtIndex:indexPath.row]];

    // and so on...

Кроме того, Роб прав относительно вашего управления памятью. Не отпускайте объекты, когда вы вынимаете их из исходного массива.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...