2012-06-18 6 views
2

На мой взгляд, у меня было несколько кнопок, и каждая кнопка имела действие, связанное с ним.Как реализовать действие в didSelectRowAtIndexPath UITableview?

UIButton *testButton = [[UIButton alloc] initWithFrame:CGRectMake(120,300,90,90)]; 
    [testButton setBackgroundImage:[UIImage imageNamed:@"test.jpg"] forState:UIControlStateNormal]; 
    [testButton addTarget:self.view action:@selector(gotoProd:) forControlEvents:UIControlEventTouchUpInside]; 
    [testButton addt 
    [scrollView testButton]; 

Но теперь я пытаюсь заменить все эти кнопки табличным представлением на строки. Я смог заполнить строки, и я знаю, что нужно использовать didSelectRowAtIndexPath для обработки в выбранном событии ячейки. Но как я могу реализовать действие: @selector (gotoProd :) в tableviews ?? Любая помощь будет оценена.

ответ

2

Наиболее прямолинейный путь будет выглядеть следующим образом:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 

     switch (indexPath.row) { 
     case 0: 
      [self doRow0Action]; 
      break; 
     case 1: 
      [self doRow1Action]; 
      break; 
     // etc... 

     default: 
      break; 
    } 
} 

Если вы хотите вместо этого, вы можете инициализировать массив с типами SEL:

[actionArray addObject:@selector(doRowNAction)]; 

обращаться к нему так:

[self performSelector:[actionArray objectAtIndex:indexPath.row] withObject:nil]; 
+0

Спасибо так много; работал как шарм –

+0

Этот ответ также помогает, если вы обертываете все данные Cell в NSDictionary, определяя имена селекторов с помощью NSString. Вы можете использовать [self performSelector: NSSelectorFromString ([cellData objectForKey: @ "cell_selector"])]; в didSelectRow для выполнения ваших действий. –

0

Вызов

[self gotoProd:indexPath.row]; 

из didSelectRowAtIndexPath

и

- (void)gotoProd:(int)rowSelected { 
     //Check row index here and do it accordingly 
} 
Смежные вопросы