我已採取自定義複選框,並在的cellForRowAtIndexPath寫成:
static NSString *CustomCellIdentifier = @"CustomCell";
ReportAttendedBy *cell = (ReportAttendedBy *)[tableView dequeueReusableCellWithIdentifier:CustomCellIdentifier];
if (cell == nil)
{
NSArray *nib;
nib = [[NSBundle mainBundle] loadNibNamed:@"ReportAttendedBy" owner:self options:nil];
for(id oneObject in nib)
if([oneObject isKindOfClass:[ReportAttendedBy class]])
cell = (ReportAttendedBy *)oneObject;
}
[cell setSelectionStyle:UITableViewCellSelectionStyleNone];
cell.textLabel.font= [UIFont fontWithName:@"Arial Rounded MT Bold" size:15.0];
cell.textLabel.textColor=[UIColor whiteColor];
ReportCreateOrView *repVw= [arrAttendedBy objectAtIndex:indexPath.row];
cell.txtCustName.text = repVw.strCustomer;
cell.txtCustName.tag = indexPath.row + 100;
cell.txtCustName.delegate = self;
[cell.txtCustName addTarget:self action:@selector(goAway:) forControlEvents:UIControlEventEditingDidEndOnExit];
[cell.btnCheckBox addTarget:self action:@selector(checkboxClicked:) forControlEvents:UIControlEventTouchUpInside];
cell.btnCheckBox.tag = indexPath.row + 5000;
NSLog(@"repVw.strSelected=== %@",repVw.strSelected);
if([repVw.strSelected isEqualToString:@"1"])
{
[cell.btnCheckBox.currentBackgroundImage isEqual:[UIImage imageNamed:@"ckeckbox_checked.png"]];
// cell.txtCustName.userInteractionEnabled = true;
}
else
{
[cell.btnCheckBox.currentBackgroundImage isEqual:[UIImage imageNamed:@"ckeckbox_unchecked.png"]];
//cell.txtCustName.userInteractionEnabled = false;
}
return cell;
和我在checkboxClicked方法保持與1複選框值和零和以及改變按鈕的圖像
-(IBAction)checkboxClicked:(id)sender
{
NSLog(@"tag=== %d",[sender tag] - 5000);
int index= [sender tag] - 5000;
UIButton *btn= (UIButton *)sender;
ReportCreateOrView *repObj= [arrAttendedBy objectAtIndex:index];
if([btn.currentBackgroundImage isEqual:[UIImage imageNamed:@"checkbox_unchecked.png"]])
{
[btn setBackgroundImage:[UIImage imageNamed: @"checkbox_checked.png"] forState:UIControlStateNormal];
selCustId = [repObj.strCustId intValue];
val = 1;
[self updateAttendedBy]; //in this method i've written query to update value in table
}
else if([btn.currentBackgroundImage isEqual:[UIImage imageNamed:@"checkbox_checked.png"]])
{
[btn setBackgroundImage:[UIImage imageNamed: @"checkbox_unchecked.png"] forState:UIControlStateNormal];
selCustId = [repObj.strCustId intValue];
val= 0;
[self updateAttendedBy];
}
}
並且不要忘記編寫viewWillAppear中的getvalues方法。 :)
你應該在你的下一篇文章中更好地格式化你的代碼。感謝vikingosegundo修復代碼格式。 – 2013-03-12 20:06:18
您可以添加一個字段,如表中所選,並且如果該值被選中,那麼使用yes或1來更新它,無論您需要什麼值。當你回到tableview時,只是在viewWillAppear中從數據庫和cellforRowAtIndexPath中獲取數據,只需檢查該值是否被選中,然後將它們標記爲checked,否則取消選中。你也可以通過創建自定義單元來完成。 – 2013-03-13 05:21:38
我有核心數據工作,它是從數組中拉我的數據。核心數據中有一個名爲checkMark的字段,設置爲一個字符串。如果它是真的,我想用它來保留我的複選標記。但是現在我不確定如何將數據從單元連接到核心數據,並在視圖加載後返回。再次感謝! – 2013-03-13 20:53:30