2015-09-06 3 views
0

Я ищу, это чистый способ изменения модели после нажатия кнопки в пользовательской ячейке. Это нажав на кнопку, которая имеет значение здесь и не выбрать строку, так didSelectRowAtIndexPath не то, что меня интересует.Изменение модели после нажатия UIButton в пользовательском UITableViewCell

Например

let array = [true, false, true] 

Когда пользователь нажимает на кнопку во второй ячейке, модель должен стать

array[1] = true 

в cellForRowAtIndexPath цель действий добавляется к кнопке:

cell.button.addTarget(self, action: "myAction:", forControlEvents: UIControlEvents.TouchUpInside) 

действие выглядит следующим образом:

func myAction(sender:UIButton!) 
    { 
     //how to change the model and reloadRowsAtIndexPaths since the sender is just a UIButton!? 
    } 
+0

Каждая ячейка содержит кнопку – Lamar

+0

да, это свойство/подзаголовок пользовательской ячейки – Carpsen90

ответ

0

Если у вас есть только один раздел в tableViewController, вы всегда можете установить button.tag = [indexPath row] внутри cellForRowAtIndexPath. Тогда ваше действие всегда будет знать, какая строка была затронута от значения sender.tag. Быстро и грязно, но это сработает.

Или, если вы повторно используете эту пользовательскую ячейку в табличных представлениях с несколькими разделами, вы можете подклассифицировать UIButton и добавить свойство для indexPath. Тогда у вас всегда будет доступ к значениям раздела и строки. Лично я бы взял этот подход, потому что он дает вам максимальную гибкость в долгосрочной перспективе.

0

внутри cellForRowAtIndexPath()

cell.button.tag = indexPath.row 

Тогда внутри вашей функции MyAction()

func myAction(sender:UIButton) 
{ 

    var index = sender.view.tag 
    array[index] = true // just like you want 

    } 
0

Я немного неясно ваш вопрос - вы спрашиваете, как вы можете измените содержимое uitableviewcell, как только кнопка нажата в ячейке, тогда один из способов пойти по ней - это пометить кнопку с помощью индекса indexPath ячейки, когда ячейка будет создана в cellForRowAtI Метод ndexPath. Затем вы можете прочитать тег из селектора после нажатия кнопки.

Я только что испытал это, и он работает. При создании ячейки добавьте строку:

cell.tag=indexPath.row; 

, а затем в методе селекторного для кнопки вы можете использовать:

NSInteger p=sender.tag; 
int x=(int)p; 
NSIndexPath *path = [NSIndexPath indexPathForRow:x inSection:0]; 

UITableViewCell *cell = [_tableView cellForRowAtIndexPath:path]; 
cell.backgroundColor=[UIColor blackColor]; 

В моем примере я изменил цвет фона ячейки, что нажата кнопка была в.

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