2013-02-13 6 views
0

Мне нужно добавить несколько флажков в каждом UITableViewCell. Я знал, как это сделать, если есть только один флажок, и мы проверяем статус. Но поскольку я беру несколько флажков, статус флажка не получается правильно. Я могу установить флажок, когда я дважды нажимаю на него.Несколько флажков в UITableViewCell

-(IBAction)checkboxClicked:(id)sender 
{ 

    NSIndexPath *indexPath = [self.tableView indexPathForCell:(UITableViewCell *) 
           [[sender superview] superview]]; 
    NSLog(@"The section is %d", indexPath.section); 
    UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath]; 
    NSMutableArray *cellSection = [self.array objectAtIndex:indexPath.section]; 
    int tagID=[sender tag]; 

    int divnum=0; 
    if(tagID<100) 
     divnum=10; 
    else 
     divnum=100; 
    int section=[sender tag]/divnum; 
    section-=1; 
    int itemId=[sender tag]%divnum; 

    if(itemId==selectedrowforCheckBox) 
    { 

     if(self.isChecked ==NO) 
     { 
      self.isChecked =YES; 
      [sender setImage:[UIImage imageNamed:@"checkbox_checked.png"] forState:UIControlStateNormal]; 

      NSNumber* xWrapped = [NSNumber numberWithInt:itemId]; 
      int m=[cellSection count]-1; 
      NSString *questionId=[[cellSection objectAtIndex:m-1]objectForKey:@"QId"]; 

      NSMutableDictionary *hk=[[NSMutableDictionary alloc]init]; 
      [hk setObject:xWrapped forKey:@"Ans"]; 
      [hk setObject:questionId forKey:@"QId"]; 
      [selectedOptionandQIdArray addObject:hk]; 
     } 
     else 
     { 
      self.isChecked =NO; 
      [sender setImage:[UIImage imageNamed:@"checkbox_unchecked.png"]forState:UIControlStateNormal]; 

      NSNumber* xWrapped = [NSNumber numberWithInt:itemId]; 
      int m=[cellSection count]-1; 
      NSString *questionId=[[cellSection objectAtIndex:m-1]objectForKey:@"QId"]; 

      for (int i=0;i<[selectedOptionandQIdArray count];i++) 
      { 

       NSString *qid=[[selectedOptionandQIdArray objectAtIndex:i]objectForKey:@"QId"]; 
       if(xWrapped==[[selectedOptionandQIdArray objectAtIndex:i]objectForKey:@"Ans"] && [questionId isEqualToString:qid]) 
       { 

        NSLog(@"nnd"); 
        [selectedOptionandQIdArray removeObjectAtIndex:i];       
       } 
      } 
     } 
     selectedrowforCheckBox=itemId; 
    } 
    else 
    { 
     if(self.isChecked ==NO) 
     { 
      self.isChecked =YES; 
      [sender setImage:[UIImage imageNamed:@"checkbox_checked.png"] forState:UIControlStateNormal]; 

      NSNumber* xWrapped = [NSNumber numberWithInt:itemId]; 
      int m=[cellSection count]-1; 
      NSString *questionId=[[cellSection objectAtIndex:m-1]objectForKey:@"QId"]; 

      NSMutableDictionary *hk=[[NSMutableDictionary alloc]init]; 
      [hk setObject:xWrapped forKey:@"Ans"]; 
      [hk setObject:questionId forKey:@"QId"]; 


      [selectedOptionandQIdArray addObject:hk]; 



     } 
     else 
     { 
      self.isChecked =NO; 
      [sender setImage:[UIImage imageNamed:@"checkbox_unchecked.png"]forState:UIControlStateNormal]; 
     } 
     selectedrowforCheckBox=itemId; 
    } 
} 

Где я ошибаюсь? Как обрабатывать несколько флажков в UITableViewCell?

+0

, когда и нажмите на него один раз проверить ур selectedrowforCheckBox value..if оно не вернуться что-нибудь тогда вам нужно сначала получить selectedrowforCheckBox от didSelectRowAtIndexPath, а затем запустить над ним код выше. – BhushanVU

+0

Вы можете разместить изображение? несколько флажков сначала звучат как плохая идея ... – nielsbot

ответ

0

вы попробуете это

1 вы даете теги все ваши Флажки и ячейки строк и посмотреть на cellForRowAtIndexPath 2 и на кнопку мыши вы пытаетесь писать, как этот код

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

ArrayName = Array Удерживать все данные данной таблицы, фактически сохраняет все представление (в этом массиве мы сохраняем представление, отображаемое на ячейке, другими словами оно хранит полная ячейка)

пользовательский метод класса, как этот

- (IBAction)button_Action:(UIButton *)sender { 
     [parentView Action:self.view.tag BtnTag:sender.tag]; 
} 

в родительском классе

-(void)Remove:(int) BtnTag :btnTag 
for (int i = 0; i<[ArrayName count]; i++) 
{ 
    customCell *vca=[ArrayName objectAtIndex:i]; 
    if(vca.view.tag == viewTag) // here check the cell where we tap or click 
    { 
     for (UIView* view in [self.view subviews]) { 
      if([view isKindOfClass:[UIButton class]]){ 
       UIButton *btn = (UIButton*)view; 
        if(btn.tag == btnTag) 
       NSLog(@"You write this your own code what you want to do "); 
       } 
       } 

    } 
    } 
} 

я надеюсь, что это решить вашу проблему

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