2014-09-18 5 views
0

У меня есть табличный вид, внутри которого есть ячейка. Эта ячейка имеет кнопку, которая объявляется так в классе customTableVIewCell.Изменение названия кнопки внутри пользовательской ячейки моего табличного представления

@property (weak, nonatomic) IBOutlet UIButton *myButton; 

внутри контроллера вида таблицы, я устанавливаю метод для этой кнопки.

[cell.myButton setTitle:@"Show cell number!" forState:UIControlStateNormal]; 
[cell.myButton addTarget:self action:@selector(myButtonClicked:) forControlEvents:UIControlEventTouchUpInside]; 

Я хочу изменить название кнопки при каждом ее выборе.

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

При каждом нажатии кнопки я хочу изменить заголовок кнопки на 1 или 2 или 3 в зависимости от номера ячейки, в которой находится кнопка.

я попытался это:

- (IBAction)myButtonClicked:(id)sender{ 
    NSIndexPath *indexPath =[self.tableVIew indexPathForCell:(UITableViewCell *)[[sender superview] superview]]; 
    NSUInteger row = indexPath.row; 
    NSLog(@"button was clicked for the following row %i", row); 
} 

Но это печать «кнопка была нажата на следующую строку 0» в консоль, независимо от того, кнопки на ячейку # 1 или соте # 2 или соте # 3 было щелкнул. (ячейка - только столбец таблицы)

Пожалуйста, помогите мне.

+0

Вы работаете с indexPath.row или indexPath.section? Сколько строк вы возвращаете в делегате UITableViewDataSource? – EridB

ответ

0

В методе cellForRowAtIndexPath где инициализируются ячейка, добавьте

cell.myButton.tag=indexPath.row; 
[cell.myButton addTarget:self action:@selector(myButtonClicked:) forControlEvents:UIControlEventTouchUpInside]; 

и обновить myButtonClicked метода.

- (IBAction)myButtonClicked:(id)sender{ 
UIButton *btn=sender; 
NSLog(@"button was clicked for the following row %i", btn.tag); 
} 
1

Попробуйте установить кнопку тег как-

cell.myButton.tag = indexPath.row; 

в методе cellForRowAtIndexPath ..

А в вашем myButtonClicked метод получить тег кнопки отправителя .. а затем делать все, что вы хотите делать дальше.

- (IBAction)myButtonClicked:(id)sender{ 

    NSLog(@"button was clicked for the following row %i", sender.tag); 
} 
1

вы можете просто использовать отправитель в IBAction :)

- (IBAction)myButtonClicked:(UIButton*)sender 
{ 
    [sender setTitle:@"show new title" forState:UIControlStateNormal]; 
} 
Смежные вопросы