2013-08-24 4 views
0


Я ищу наилучшее решение для комплексного UITableView.

Что я хочу:
У меня произвольное количество разделов.
В этом разделе только одна статическая ячейка, а затем должна прийти любое количество динамических ячеек.
Комплекс UITableView с прототипными ячейками, разделы

Мои данные сохраняются в некоторых NSMutableArray и я попытался somethink так:
Combine static and prototype content in a table view
Но я не знаю, как справиться с этим с моим рода проблемы. Так может кто-нибудь дать мне подсказку или лучшую практику?
UPDATE: 1
http://jsfiddle.net/konstheinrich188/HKkA8/ Fiddle показывает, как мои данные выглядит и то, что им пытаются TODO

Этот рис показывает, как я хочу, чтобы закодировать мой TableView ...
What i want

+0

Ваша проблема будет казаться идентичной, так что какие проблемы вы имели в реализации решения из другого вопроса? – Wain

+0

Я не знаю, как создать x разделов с разными типами ячеек. Мое мышление: элемент foreach в myArray создает раздел. В разделе Foreach добавляется одна статическая ячейка и [myotherArray count] динамические ячейки ... –

+0

Почему не массив массивов? Внешний массив - это разделы и каждый внутренний массив - это динамические строки для раздела ... – Wain

ответ

1

Так что через некоторое время и некоторые испытания и прослушивание ваших идей и технических решений я решил свою проблему!
Вот небольшой код:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 
    return [mappedSprints count]; 
} 

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section 
{ 

    UISprint*s = [mappedSprints objectAtIndex:section]; 
    return s._name; 

} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    UISprint* s = [mappedSprints objectAtIndex:section]; 
    return [s.internalUserStorey count] + [s.externalUserStorey count] + 1; 
} 

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    if (indexPath.row == 0) { 
     return 130; 
    } 
    return 80; 
} 
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:[NSString stringWithFormat:@"Cell%d%d", indexPath.row, indexPath.section]]; 

      if (cell == nil) { 
       cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:[NSString stringWithFormat:@"Cell%d%d", indexPath.row, indexPath.section]]; 
      } 

    UISprint*s = [mappedSprints objectAtIndex:indexPath.section]; 


    if (indexPath.row == 0) { 
     //Here is my first cell 
     //cell.textLabel.text =s._name; 


    } 
    else if(indexPath.row >= 0 && indexPath.row<=[s.internalUserStorey count]){ 

     //here are the cells for SubItem 


    } 

    else if(indexPath.row >= [s.internalUserStorey count]){ 


    //here are the cells for SubItem 2 

    } 
    return cell; 


Так что спасибо всем !! Лучший Константин

1

Когда вы используете термин «статический», вы действительно говорите о «статической ячейке uitableview» или, скорее, о «ячейке со статическим контентом»? Если первый; зачем тебе это надо? Если последний; как насчет тестирования в каждом разделе, является ли это первой ячейкой в ​​этом разделе, а затем представляет статический контент? Для всех других ячеек отобразите динамический контент:

if (indexPath.row == 0) { 
    // First row in section. Display static content 
    ... 
} else { 
    // Display dynamic content 
    ... 
} 

Для каких целей нужны статические ячейки?

+0

BTW, массив с массивами вполне приемлем для вашей настройки. Возможно, вам захочется добавить фиктивные записи в массивах контента, чтобы они соответствовали статическим первым ячейкам в каждом разделе. – Moonwalkr

+0

У меня есть обновленный вопрос, см. Скрипку –

+0

Зачем вам имя элемента в первой строке раздела, а не в заголовке раздела? Я предполагаю, что вот так: Ваш «Предмет» может быть музыкальным альбомом. Вы знаете, что запись имеет имя (item.name), но вы не знаете, сколько треков (подэлементов) может иметь запись. Поэтому для вашей коллекции записей вам нужен раздел для каждой записи и произвольное количество строк для треков. Соответствует ли это типу данных? Если это так, используйте заголовок раздела вместо «статической ячейки», а затем используйте обычные динамические ячейки для подэлементов. – Moonwalkr

-1

Вы можете взять один NSMuatableArray и добавить ссылки на тот т.е.

NSMuatableArray *arr=[NSMuatableArray alloc]init]; 

//section no 1 
[arr addObject:@"2"]; 

//section no 2 
[arr addObject:@"1"]; 

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

    switch(arr objectAtIndex[indexPath.row]) 
    { 
    } 
} 

вы можете использовать этот способ с помощью ссылки вы хотите набор ячеек.

Смежные вопросы