2015-09-17 5 views
0

ВОПРОСIOS: Изменение contentView BackgroundColor на приземление в пользовательских UITableViewCell

мне нужно изменить свойство BackgroundColor в contentView на событие приземление в пользовательской UITableViewCell. Я добавил UIButton в ячейку, но не могу понять, как заставить его перезагрузить ячейку и изменить содержимое contentView backgroundColor.

Что я пробовал:

добавить цель в UIButton в cellForRow: atIndexPath: как это:

[cell.touchButton addTarget:self action:@selector(touchButtonAtIndexPath:) forControlEvents:UIControlEventTouchDown]; 

Это мой метод, который должен перезагрузить ячейку, которая была выбрана :

-(void) touchButtonAtIndexPath:(NSIndexPath *)indexPath { 

    cellSelected = YES; 

    [self.tableView beginUpdates]; 
    [self.tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationNone]; 
    [self.tableView endUpdates]; 

} 

Когда эта клетка перезагружается, это код, который должен изменить цвет фона в contentView в:

if (cellSelected) { 
    cell.contentView.backgroundColor = [UIColor blueColor]; 
} 

Я получаю ошибку в моем touchButtonAtIndexPath: метод, это ошибка:

-[UIButton section]: unrecognized selector sent to instance 

Каждый знает, как я могу обновить пользовательские UITableViewCell в contentView BackgroundColor на приземление? Благодаря!

ответ

1

1: Если добавить действие к кнопке параметр Принимающий будет кнопка, вызвавший событие, а не NSIndexPath.

2: Самое простое решение было бы просто обрабатывать действие кнопки внутри ячейки и изменить цвет фона там

С этим в виду ваш код может быть что-то вроде этого:

В своей камере, когда вы его настроите, вы добавляете таргетинг на действие непосредственно в ячейку. Таким образом, в пользовательской Tableview ячейки вы добавляете цель в методе установки, или вы можете сделать это даже с stroyboard:

[self.touchButton addTarget:self action:@selector(buttonTouched:) forControlEvents:UIControlEventTouchDown]; 

И в той же камере вы обрабатывать событие водопроводную, а также изменить цвет фона

-(void) buttonTouched:(UIButton)button { 
    self.contentView.backgroundColor = [UIColor redColor]; 
} 
+0

Это похоже на то, что мне нужно, но я не понимаю, как метод buttonTouched: подключен к ячейке. Когда я использую этот код, я получаю довольно очевидную ошибку: свойство contentView не найдено на объекте типа ... –

+0

вам нужно вызвать метод addTarget внутри ячейки, а метод buttonTouched также должен быть реализован внутри вашего пользовательского интерфейса tableview cell. – Istvan

+0

У меня это уже есть, я получаю эту ошибку, потому что я передаю self.contentView, и это должно быть что-то вроде cell.contentView. Вы видите, что я говорю? –

1

использовать эти делегируют функции:

func tableView(tableView: UITableView, didHighlightRowAtIndexPath indexPath: NSIndexPath) { 
    // Do your stuff when selected 
} 


func tableView(tableView: UITableView, didUnhighlightRowAtIndexPath indexPath: NSIndexPath) { 
    // Do your stuff when unselected 

} 
+0

Моя ячейка не отвечает на эти методы, но это действительно не то, что я ищу. Я хочу отключить подсветку и сделать свою собственную подсветку. –

+0

Эти методы созданы для выделения персонализации. Я использую их в своем проекте – Masterfego

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