2011-05-11 64 views
0

Hai,iam打印每一行的複選框。但是當我們選擇任何複選框時,只有最後一個單元格複選框將被選中。以下是打印複選框和每日,每週,每月數據的代碼。如何訪問Tableview Cell中的複選框?

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

    static NSString *CellIdentifier = @"Cell"; 
    UITableViewCell *cell = [[UITableViewCell alloc]init]; 

    cell = [self getCellContentView:CellIdentifier]; 
    UILabel *lblTemp1 = (UILabel *)[cell viewWithTag:1]; 
    UILabel *lblTemp2 = (UILabel *)[cell viewWithTag:2]; 
    UILabel *lblTemp3 = (UILabel *)[cell viewWithTag:3]; 
    UILabel *lblTemp4 = (UILabel *)[cell viewWithTag:4]; 

    checkButton=[UIButton buttonWithType:UIButtonTypeCustom]; 
    checkButton.frame = CGRectMake(5,30, 15, 10); 
    [checkButton addTarget:self action:@selector(SelectCheckBox) forControlEvents:UIControlEventTouchUpInside]; 
    pictureimageView=[[UIImageView alloc]initWithFrame:CGRectMake(20, 5, 100, 60)]; 
    //pictureimageView=[[UIImageView alloc]initWithFrame:CGRectMake(2, 3, 65, 65)]; 
    [pictureimageView.layer setBorderColor:[[UIColor grayColor] CGColor]]; 
    [pictureimageView.layer setShadowColor:[[UIColor grayColor] CGColor]]; 
    [pictureimageView.layer setMasksToBounds:YES]; 
    [pictureimageView.layer setBorderWidth:1.5]; 
    [pictureimageView.layer setCornerRadius:5.0]; 
    [pictureimageView.layer setShadowRadius:1.0]; 
    [pictureimageView.layer setShadowOpacity:3.0]; 

    if(selectedSegment==0) 
    { 

     databasefields=[eventData objectAtIndex:indexPath.row]; 
      lblTemp1.text=databasefields.DBtitle; 
     lblTemp2.text=databasefields.DBlocation; 
       lblTemp3.text=databasefields.DBdate ; 
     lblTemp4.text=databasefields.DBtime; 
     //NSString *pictureString=[[NSString alloc]init]; 
     pictureString=databasefields.DBpicture; 
     checkimage = [UIImage imageNamed:@"checkbox.PNG"]; 
     [checkButton setImage:checkimage forState:UIControlStateNormal]; 
     pictureimageView.image = [UIImage imageWithContentsOfFile:pictureString]; 
     [cell.contentView addSubview:checkButton]; 
     [cell.contentView addSubview:pictureimageView]; 
    } 
    else 
     if(selectedSegment==1) 
     { 

      databasefields=[eventData objectAtIndex:indexPath.row]; 
      lblTemp1.text=databasefields.DBtitle; 
      lblTemp2.text=databasefields.DBlocation; 
      lblTemp3.text=databasefields.DBdate; 
      lblTemp4.text=databasefields.DBtime; 
      pictureString=[[NSString alloc]init]; 
      pictureString=databasefields.DBpicture; 
      checkimage = [UIImage imageNamed:@"checkbox.PNG"]; 
      pictureimageView.image = [UIImage imageWithContentsOfFile:pictureString]; 
      [cell.contentView addSubview:checkButton]; 
      [cell.contentView addSubview:pictureimageView]; 

     } 
     else if(selectedSegment==2) 
     {     

      databasefields=[eventData objectAtIndex:indexPath.row]; 
      lblTemp1.text=databasefields.DBtitle; 
      lblTemp2.text=databasefields.DBlocation; 
      lblTemp3.text=databasefields.DBdate; 
      lblTemp4.text=databasefields.DBtime; 
      pictureString=[[NSString alloc]init]; 
      pictureString=databasefields.DBpicture; 
      checkimage = [UIImage imageNamed:@"checkbox.PNG"]; 
      [checkButton setImage:checkimage forState:UIControlStateNormal]; 
      pictureimageView.image = [UIImage imageWithContentsOfFile:pictureString]; 
      [cell.contentView addSubview:checkButton]; 
      [cell.contentView addSubview:pictureimageView]; 

     } 

    // Configure the cell... 

    return cell; 
} 
-(void) SelectCheckBox 
{ 

    if (checkboxSelected == 0){ 
     [checkButton setSelected:YES]; 
     checkimage = [UIImage imageNamed:@"checkbox-on.PNG"]; 
     [checkButton setImage:checkimage forState:UIControlStateNormal]; 
     checkboxSelected = 1; 
    } else { 
     [checkButton setSelected:NO]; 
     checkimage = [UIImage imageNamed:@"checkbox.PNG"]; 
     [checkButton setImage:checkimage forState:UIControlStateNormal]; 
     checkboxSelected = 0; 
    } 


    ; 

} 

請給我的解決方案,選擇每複選框

回答

0

請閱讀Table View Programming Guide瞭解細胞。在這種情況下,它看起來像checkButton是表代表的實例變量,這就是您在-SelectCheckBox方法中修改的內容。但是,該變量僅指向您最近創建的單元格中的按鈕。如果你想操作一個特定的單元格,你應該先獲取該行的單元格,然後找到它的複選框按鈕。一種方法是在設置單元格時將tag屬性設置爲特定值。然後,您可以向單元格詢問具有該標籤的子視圖。