我正在制作一个允许选择单元格的UITableView
(比如语言`TableView \,但只有一个)但是复选标记附件不起作用。
if (tableView == self.numberTableView) {
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
}
cell.text = [arryNumber objectAtIndex:indexPath.row];
if ([cell.textLabel.text isEqualToString:@"0"])
{
if (inumberfont == 0) {
cell.accessoryType = UITableViewCellAccessoryCheckmark;
}else {
cell.accessoryType = UITableViewCellAccessoryNone;
}
}
if ([cell.textLabel.text isEqualToString:@"1"])
{
if (inumberfont == 1) {
cell.accessoryType = UITableViewCellAccessoryCheckmark;
}else {
cell.accessoryType = UITableViewCellAccessoryNone;
}
}
if ([cell.textLabel.text isEqualToString:@"2"])
{
if (inumberfont == 2) {
cell.accessoryType = UITableViewCellAccessoryCheckmark;
}else {
cell.accessoryType = UITableViewCellAccessoryNone;
}
}
if ([cell.textLabel.text isEqualToString:@"3"])
{
if (inumberfont == 3) {
cell.accessoryType = UITableViewCellAccessoryCheckmark;
}else {
cell.accessoryType = UITableViewCellAccessoryNone;
}
}
if ([cell.textLabel.text isEqualToString:@"4"])
{
if (inumberfont == 4) {
cell.accessoryType = UITableViewCellAccessoryCheckmark;
}else {
cell.accessoryType = UITableViewCellAccessoryNone;
}
}
}
有人可以帮忙吗?
答案 0 :(得分:1)
行是什么:
cell.text = [arryNumber objectAtIndex:indexPath.row];
什么是cell.text
?你的意思是cell.textLabel.text
顺便说一句,我认为您可以通过执行以下操作来压缩代码:
if ([cell.textLabel.text intValue] == inumberfont) {
cell.accessoryType = UITableViewCellAccessoryCheckmark;
} else {
cell.accessoryType = UITableViewCellAccessoryNone;
}
你不需要所有8个if语句。
答案 1 :(得分:1)
我重写了你的代码。
if (tableView == self.numberTableView) {
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
}
cell.text = [NSString stringWithFormat:@"%i", indexPath.row];
if (inumberfont == indexPath.row) {
cell.accessoryType = UITableViewCellAccessoryCheckmark;
} else {
cell.accessoryType = UITableViewCellAccessoryNone;
}
}
上面的代码与您的代码完全相同,但是,您的代码无效。在下面的代码中,我修复了我发现的错误。我还添加了一些丢失的代码。如果你之前有过,但没有包括它,那很好;我只是想确保它没有丢失。
if (tableView == self.numberTableView) {
static NSString *CellIdentifier = @"NumberCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}
cell.textLabel.text = [NSString stringWithFormat:@"%i", indexPath.row];
if (inumberfont == indexPath.row) {
cell.accessoryType = UITableViewCellAccessoryCheckmark;
} else {
cell.accessoryType = UITableViewCellAccessoryNone;
}
return cell;
}
我不确定你的意思是“复选标记附件不起作用”,但尝试使用我的建议改进你的代码,如果它仍然不起作用,请发表评论我会看到我能做什么尽力帮助你。
编辑:找出问题所在。请尝试以下方法:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
inumberfont = indexPath.row;
[tableView reloadData];
}