Как передать аргумент в @selector?
Как я могу передать аргумент в @selector
в моем коде ниже?
[thisIconBtn addTarget:self action:@selector(changeIconState) forControlEvents:UIControlEventTouchUpInside];
-(void)changeIconState:(UITableViewCell*)thisCell
{
//do something
}
3 ответов
во-первых, двоеточие является частью селектора:@selector(changeIconState:)
.
во - вторых, действия-это методы, которые принимают определенный набор параметров-вы не можете просто использовать любой метод в качестве действия. Обычно действия выглядят так:
- (void)myAction:(id)sender;
где sender-указатель на объект, который отправляет действие. В ваш код, когда thisIconButton прослушивается, что кнопка будет принят в качестве отправителя.
Если вы хотите ячейку, к которой принадлежит кнопка, получите ее с помощью button.superview.superview
но я не думаю, что вы можете изменить аргументы целевых методов управления событиями.
одной из наиболее распространенных причин для отправки данных через селектор является использование пользовательской кнопки в UITableViewCell.
Matthias Bauch предоставил отличный пример кода о том, как получить indexPath, просмотрев ячейку отправителя в соответствующем сообщении. См.https://stackoverflow.com/a/5690329/654870.