Передача аргументов в метод @selector - PullRequest
0 голосов
/ 09 марта 2011

Я добавил UIButton в табличном представлении. Теперь, когда я нажимаю определенную кнопку, мне нужно получить детали объекта, соответствующего этой строке.

[button addTarget:self 
           action:@selector(invite:contactmail:) 
 forControlEvents:UIControlEventTouchUpInside];  

Я использовал этот метод для кнопки; как я могу передать аргументы этому методу селектора? Или есть другой способ передачи аргументов этому методу при нажатии этой кнопки?

Ответы [ 2 ]

3 голосов
/ 09 марта 2011

методы, которые вы добавляете как действия в UIControl, могут иметь 3 разные подписи

- (void)action
- (void)action:(id)sender
- (void)action:(id)sender event:(UIEvent *)event

вы не можете передать свой собственный объект.Часто можно получить любой объект, который вы пытаетесь передать, с помощью объекта отправителя (вашей кнопки).

Если у вас есть кнопка в ячейке просмотра таблицы, вы можете использовать что-то вроде этого для получения indexpath ячейки.

- (IBAction)buttonAction:(id)sender {
    UIButton *button = (UIButton *)sender;
    CGPoint buttonOriginInTableView = [button convertPoint:CGPointZero toView:tableView];
    NSIndexPath *indexPath = [tableView indexPathForRowAtPoint:buttonOriginInTableView];

    // do something
}

и с помощью indexPath вы можете получить нужный объект.

0 голосов
/ 09 марта 2011

Нет, не совсем. Событие клика

-(IBAction) fnc:(id)sender;

Если вы хотите вызвать другой метод, вам нужно будет сделать это в функции этой формы.

-(IBAction) fnc:(id) sender
{
   UIButton *b = (UIButton*) sender;
   [self otherFnc:b arg:arg1 arg2:arg2];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...