Как передать аргумент в @selector? - PullRequest
8 голосов
/ 05 июня 2011

Как я могу передать аргумент в @selector для моего кода ниже?

[thisIconBtn addTarget:self action:@selector(changeIconState) forControlEvents:UIControlEventTouchUpInside];

-(void)changeIconState:(UITableViewCell*)thisCell
{
  //do something
}

Ответы [ 3 ]

6 голосов
/ 05 июня 2011

Сначала двоеточие является частью селектора: @selector(changeIconState:).

Во-вторых, действия - это методы, которые принимают определенный набор параметров - вы не можете просто использовать любой метод в качестве действия. Обычно действия выглядят так:

- (void)myAction:(id)sender;

где отправитель - указатель на объект, который отправляет действие. В вашем коде при нажатии thisIconButton эта кнопка будет передана как отправитель.

1 голос
/ 05 июня 2011

Если вы хотите, чтобы ячейка, к которой принадлежит кнопка, получила ее с помощью button.superview.superview, но я не думаю, что вы можете изменить аргументы целевых методов для управляющих событий.

0 голосов
/ 02 ноября 2012

Одной из наиболее распространенных причин попытки отправки данных через селектор является использование пользовательской кнопки в UITableViewCell.

Матиас Баух предоставил отличный пример кода о том, как получить indexPath, просмотрев ячейку отправителя в соответствующем сообщении.Смотри https://stackoverflow.com/a/5690329/654870.

...