2015-12-09 2 views
3

У меня есть четыре кнопки в пользовательских ячейках, таких как ans1, ans2, ans3, ans4, в которых я хочу проверить эти кнопки в didselectrowatindexpath в каждом indexpath.row, как я могу это сделать? Я также установил теги кнопок (1,2,3,4)? вот мой cellforatindexpath кодкак проверить радиокнопки с изображениями в didselectrowatindexpath?

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *cellId = @"Cell"; 
    ContestQATableViewCell *cell =(ContestQATableViewCell *)[tableViewQA dequeueReusableCellWithIdentifier:cellId]; 
    if (cell==nil) 
    { 
     NSArray *myNib; 
     myNib =[[NSBundle mainBundle]loadNibNamed:@"ContestQATableViewCell" owner:self options:nil]; 
     cell = (ContestQATableViewCell *)[myNib lastObject]; 
    } 
    cell.question.text = [getContestQArray objectAtIndex:indexPath.row]; 
    NSString *str1 = [getAnswer1Array objectAtIndex:indexPath.row]; 
    NSString *str2 = [getAnswer2Array objectAtIndex:indexPath.row]; 
    NSString *str3 = [getAnswer3Array objectAtIndex:indexPath.row]; 
    NSString *str4 = [getAnswer4Array objectAtIndex:indexPath.row]; 
    [cell.answer1 setTitle:str1 forState:UIControlStateNormal]; 
    [cell.answer2 setTitle:str2 forState:UIControlStateNormal]; 
    [cell.answer3 setTitle:str3 forState:UIControlStateNormal]; 
    [cell.answer4 setTitle:str4 forState:UIControlStateNormal]; 
    return cell; 
} 

если я нажимаю на ANS1 оставшихся 3buttons будет отменить если я нажимаю на ans2 оставшихся 3buttons будет снять выделение и так далее ... в каждой пользовательской ячейке

+0

Возможный дубликат [Детектирование который UIButton была нажата в UITableView] (http://stackoverflow.com/questions/1802707/detecting-which -uibutton-was-press-in-aitableview) – evnaz

+0

Это то, как дублируется ссылка, которую вы предоставили _evnaz_, но _Mangi_ делает это иначе, как в одной ячейке, используя четыре кнопки. Пожалуйста, исправьте, если я что-то не понял. –

ответ

1
- (IBAction)select:(id)sender { 

    UIButton* btn=(UIButton*)sender; 

    CustomCell* cel=(CustomCell*)[btn.superview superview]; 

    if (cel.a1.tag==btn.tag) { 

     [cel.a1 setImage:[UIImage imageNamed:@"active.png"] forState:UIControlStateNormal]; 
    }else{ 

     [cel.a1 setImage:[UIImage imageNamed:@"inactive.png"] forState:UIControlStateNormal]; 
    } 
    if (cel.a2.tag==btn.tag) { 

     [cel.a2 setImage:[UIImage imageNamed:@"active.png"] forState:UIControlStateNormal]; 
    }else{ 

     [cel.a2 setImage:[UIImage imageNamed:@"inactive.png"] forState:UIControlStateNormal]; 
    } 
    if (cel.a3.tag==btn.tag) { 

     [cel.a3 setImage:[UIImage imageNamed:@"active.png"] forState:UIControlStateNormal]; 
    }else{ 

     [cel.a3 setImage:[UIImage imageNamed:@"inactive.png"] forState:UIControlStateNormal]; 
    } 
    if (cel.a4.tag==btn.tag) { 

     [cel.a4 setImage:[UIImage imageNamed:@"active.png"] forState:UIControlStateNormal]; 
    }else{ 

     [cel.a4 setImage:[UIImage imageNamed:@"inactive.png"] forState:UIControlStateNormal]; 
    } 

} 
+0

У меня есть четыре кнопки. как я могу это сделать? –

+0

@MangiReddy добавляет общий IBAction ко всем четырем кнопкам i.e. - (IBAction) выбирает: (id) отправитель, а затем получает btn superview, как мой обновленный ответ - –

+0

, когда я пытаюсь использовать этот код в ContestQAViewController.m, на кнопках указаны незаявленные идентификаторы. –

1

Я вижу, что ваш инструмент теперь не очень хорош. Имейте способ получить это, но это не ясно. Поэтому я предлагаю вам следует поместить действие кнопки действий по классу ContestQATableViewCell и вызвать делегат обратно к контроллеру иметь вид таблицы и doSomeThingWithit

Сначала вы создаете делегат:

@protocol ContestCellDelegate <NSObject> 

@required 
- (void)didTapButtonAtIndexpath:(NSIndexPath *)indexPath posision: (NSInteger)position; 
@end 
    @interface ContestQATableViewCell : UITableViewCell 

@property (weak, nonatomic) IBOutlet UILabel *question; 
@property (weak, nonatomic) IBOutlet UIButton *answer1; 
@property (weak, nonatomic) IBOutlet UIButton *answer2; 
@property (weak, nonatomic) IBOutlet UIButton *answer3; 
@property (weak, nonatomic) IBOutlet UIButton *answer4; 

@property (strong, nonatomic) NSIndexPath *indexPath; 
@property (weak, nonatomic) id<ContestCellDelegate>delegate; 

//- (void)configCellWithQuestion:() 


    @end 

И вы добавляете действия в клетке, когда пользовательский кран это вы называете delgate назад:

- (IBAction)answer1IsTapped:(id)sender { 
if (self.delegate) { 
    [self.delegate didTapButtonAtIndexpath:self.indexPath posision:1]; 
    } 
} 
- (IBAction)answer2IsTapped:(id)sender { 
if (self.delegate) { 
    [self.delegate didTapButtonAtIndexpath:self.indexPath posision:2]; 
} 
} 

    - (IBAction)answer3IsTapped:(id)sender { 
if (self.delegate) { 
    [self.delegate didTapButtonAtIndexpath:self.indexPath posision:3]; 
} 
} 

    - (IBAction)answer4IsTapped:(id)sender { 
if (self.delegate) { 
    [self.delegate didTapButtonAtIndexpath:self.indexPath posision:4]; 
} 
} 

и в контроллере вы ловите и делать то, что вы хотите:

- (void)didTapButtonAtIndexpath:(NSIndexPath *)indexPath posision:(NSInteger)position { 
//You can get index postion and do anything here 
NSLog(@"%ld %ld", (long)indexPath.row, (long)position); 
} 

Более подробно вы можете получить этот код и применить к вашему проекту: Demo Code

+0

извините, что я уже создал ContestQACustomCell (.h и .m) в том, что я также создал свойства для Label n Buttons –

+0

Вы можете делать так, как я. Это просто демо, вы можете вытащить розетку и действие, и так же. –

+0

благодарю вас за ответ :) –

Смежные вопросы