iOS: UITableView разъяснения - PullRequest
       2

iOS: UITableView разъяснения

0 голосов
/ 31 января 2012

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

Предположим, у меня есть код ниже для didSelectRowAtIndexPath:

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

    CGSize cellSize = [tableView cellForRowAtIndexPath:indexPath].frame.size;

    UIView *selectionView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, (int)cellSize.width, (int)(cellSize.height + 100))];
    selectionView.layer.borderWidth = 2;

    [[tableView cellForRowAtIndexPath:indexPath]addSubview:selectionView];

}

Теперь я хочу удалить созданный selectionView, когда фокусируюсь на другой ячейке, и снова создать его для ячейки, на которую фокусируюсь. Проблема в том, что когда я выбираю ячейку в первый раз, она работает отлично, но когда Я выбираю другую ячейку, selectionView, созданный из предыдущей ячейки, все еще не исчезает, и он уже дублирует представление. Как я должен решить это? Нужно предложение .. :( спасибо ..

Ответы [ 2 ]

1 голос
/ 31 января 2012

Вам необходимо добавить tag для selectionView следующим образом

selectionView.tag = 100;

Кроме того, вам нужно иметь ссылку на последний выбранный indexPath, объявив член класса NSIndexPath и сохранив его..

Поэтому, выбирая новую ячейку, получите ячейку с последним выбранным индексным путем и удалите представление из ячейки следующим образом

UITableViewCell *lastCell = [tableView cellForRowAtIndexPath:lastSelIndexPath];
UIView *view = [lastCell viewWithTag:100];
[view removeFromSuperview];
1 голос
/ 31 января 2012

Вам действительно нужно взглянуть на подклассы UITableViewCell, если вы хотите пользовательский интерфейс выбора. Затем переопределите [UITableViewCell setSelected:animated:] (или [UITableViewCell setHighlighted:animated:]) для выполнения настроек.

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