Передача аргумента в методе действия кнопки без использования тега - PullRequest
0 голосов
/ 08 сентября 2011

Я создаю кнопку динамически. и создание методов действия

  [newButton addTarget:self action:@selector(goToNew:)forControlEvents:UIControlEventTouchUpInside];

Я хочу отправить аргумент (indexpath.row) из таблицы, но не хочу использовать тег ... потому что мне нужно, чтобы этот тег оставался одинаковым для всех кнопок, как я могу передать аргумент в действии кнопки?

На самом деле я добавляю кнопку в каждую ячейку таблицы, и мне нужно действие для всех этих кнопок, но если я использую tag = indexpath.row и использую его с действием, это работает, но возникает проблема с наложением кнопки. Поэтому я хочу тег будет постоянным.

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

static NSString *CellIdentifier = @"Cell";
UIButton *btn;

UITableViewCell *cell = (UITableViewCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
    cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];

    btn = [UIButton buttonWithType:UIButtonTypeCustom];
    [btn addTarget:self action:@selector(goToNew:) forControlEvents:UIControlEventTouchUpInside];
    btn.tag = 55;
    [cell.contentView addSubview:btn];

}
else {
    btn = (id)[cell.contentView viewWithTag:55];

}

return cell;

}

- (void) goToNew:(id)sender   

{
UIButton *b = (UIButton *)sender;<br> UITableViewCell cell = (UITableViewCell ) [b superview];
int row = [msgTableView indexPathForCell:cell].row;<br> (@ "строка - это :::% d", строка);

}

Ответы [ 3 ]

1 голос
/ 08 сентября 2011

Вы можете передать другой аргумент в качестве установленного заголовка кнопки, используя другое значение. Здесь вы можете передать indexpath в качестве заголовка кнопки.

1 голос
/ 08 сентября 2011

Выполнив следующий код, вы получите indexPath.row, и вам не нужно устанавливать тег кнопки.

- (IBAction)goToNew:(id)sender 
{
    UIButton *btn = (UIButton*) sender;
    UITableViewCell *cell = (UITableViewCell*) [btn superview];
    NSIndexPath *indexPath = [tableView indexPathForCell:cell]; 
    int row = indexPath.row;
}
0 голосов
/ 08 сентября 2011
-(void)goToNew:(id)sender

{
    UIButton *btnTemp = (UIButton *)[yourTableView viewWithTag:sender];
    int iTag = btnTemp.tag;  

}  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...