2012-01-31 2 views
0

Как я могу исключить представления, созданные при выборе ячейки в UITableView, когда ячейка больше не выбрана или другая ячейка включена.iOS: разъяснения 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, созданный из предыдущей ячейки, все еще не исчезает и дублирует представление уже. Как я могу это решить? Нужно предложение .. :(спасибо ..

ответ

1

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

selectionView.tag = 100; 

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

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

UITableViewCell *lastCell = [tableView cellForRowAtIndexPath:lastSelIndexPath]; 
UIView *view = [lastCell viewWithTag:100]; 
[view removeFromSuperview]; 
+0

благодаря aadhira ... хех мы имеем то же самое предположение и он работает ..: D – Aldee

1

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

+0

спасибо откусит ... – Aldee