UITableViewCellAccessoryCheckmark в разных разделах - PullRequest
0 голосов
/ 15 февраля 2012

У меня есть 2 раздела в UITableView. Я хотел бы включить метку UITableViewCellAccessoryCheckmark в строке, которую я выбрал.
В 2 разделах может быть только 1 проверенная строка.
Как я могу это сделать? Примеры, которые я нашел, показывают только, как это сделать с 1 разделом.

Спасибо.

Ответы [ 4 ]

1 голос
/ 01 августа 2013

это будет работать для любого количества разделов и ячеек в каждом разделе

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    [tableView cellForRowAtIndexPath:[NSIndexPath indexPathForItem:indexPath.row inSection:indexPath.section]].accessoryType = UITableViewCellAccessoryCheckmark;
    [self deSelectOtherCellsInTableView:tableView Except:indexPath]; 
}

-(void)deSelectOtherCellsInTableView:(UITableView *)tableView Except:(NSIndexPath *)indexPath
{
    for(UITableViewCell *cell in [tableView visibleCells]){
        NSIndexPath *index = [tableView indexPathForCell:cell];
        if(index.section == indexPath.section && index.row != indexPath.row){
            cell.accessoryType = UITableViewCellAccessoryNone;
        }
    }
}
0 голосов
/ 15 февраля 2012

В этом вам может помочь. На методе делегирования UITavleview вы можете реализовать этот код

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    if(indexPath.section==1)
    {
        NSUInteger row=indexPath.row;

//  implement you code  for first section;

    }
    elseif(indexPath.section==2)
    {
        NSUInteger row=indexPath.row;
//implement you code  second first section;

    }
.....................
.....................
.....................
}
0 голосов
/ 15 февраля 2012

Здесь я предполагаю, что общее количество строк в каждом разделе равно 3, а общее количество разделов - 2.

 - (void)tableView:(UITableView *)tableView1 didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{


       for(NSInteger i=0;i<2;i++) 
       {


        for (int index=0; index<3; index++) 
        {
            NSIndexPath *indexpath=[NSIndexPath indexPathForRow:index inSection:i];
            UITableViewCell *cell=[tableView1 cellForRowAtIndexPath:indexpath];

            if ([indexPath compare:indexpath] == NSOrderedSame) 
            {

                cell.accessoryType=UITableViewCellAccessoryCheckmark;
            }
            else
            {

                cell.accessoryType=UITableViewCellAccessoryNone;
            }
        }
       }
}
0 голосов
/ 15 февраля 2012

Вы можете сохранить переменную, в которой будут храниться номер раздела и номер строки, и логическое значение для отслеживания, если был сделан выбор. В методе didSelectRow вы можете получить доступ к этим значениям, чтобы удалить выделение из предыдущей ячейки, если оно есть, и обновить их до текущих выбранных значений строки и раздела.

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