Пользовательские разделы в TableView - PullRequest
2 голосов
/ 17 мая 2011

Я просмотрел несколько сообщений на этом сайте, но не нашел точную проблему, поэтому я ищу совет. В настоящее время у меня есть приложение с сущностью TaskList, которое я использую для поддержки моего текущего TableView. Я хотел бы создать разделы на основе нескольких атрибутов объекта. Например, у меня есть атрибут «isShared bool» и «завершено» bool, и я хотел бы отобразить разделы для группировки «общих» элементов, «не общих» элементов и «завершенных» элементов.

Это ситуация, когда переходное свойство будет работать? Большинство приложений, которые я видел, относятся только к одному атрибуту, поэтому я не смог обернуть его вокруг себя.

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 08 июля 2011

Я бы использовал словарь с массивами.Я бы заполнил словарь в методе init или viewDidLoad TableViewController.

0 голосов
/ 08 июля 2011

У меня есть идея в голове, но это может быть не лучшим решением. Можете ли вы создать три массива, содержащих объекты для «isShared», «notShared» и «complete» на основе ваших атрибутов bool?

Тогда в вашей табличной ячейке методы

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    //Custom your cell for different section here
    switch (indexPath.section)
    {
         //First section is shared item
         case 0:
              if(cell == nil){
                  cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
             //Custom your cell here, for example, you can assign an item in your list to the cell's textlable
             cell.textLabel.text = [sharedArray objectAtIndex:[indexPath row]];
             }
             break;
         case 1:
              if(cell == nil){
                   cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
              //Custom your cell for not shared item here
              cell.textLabel.text = [notSharedArray objectAtIndex:[indexPath row]];
              }
              break;
          case 2:
              if(cell == nil){
                   cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
              //Custom your cell for not shared item here
              cell.textLabel.text = [CompletedArray objectAtIndex:[indexPath row]];
              }
               break;
          default:
               break;
    }
    return cell;
}

Таким образом, вы получаете три раздела в табличном представлении, сгруппированных по атрибутам bool. Если вы измените один элемент в своем списке, то есть поделились одним неразделенным элементом из неразделенного раздела, вам может потребоваться реализовать метод для перемещения этого объекта из unSharedArray в sharedArray, а затем вызвать

[tableView reloadData]

чтобы обновить таблицу.

...