iPhone:设置自定义单元配件时出现问题

时间:2011-08-16 11:04:43

标签: iphone ios

首次加载页面时,我无法设置自定义单元格附件视图,任何想法?

在DetailView customcell的课程中我有:

- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
    [super setSelected:selected animated:animated];
    if(self.selected)
       self.accessoryType=UITableViewCellAccessoryCheckmark;
    else
       self.accessoryType=UITableViewCellAccessoryNone;
}

在tableview控制器中:

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

      DetailViewCell *cell = [DetailViewCell  cellForTableView:tableView];

      if(somelogichere){            
        [cell setSelected:YES];
      }
        return cell;
}

我调试并点击那一行,所以逻辑是真的,但是在调试中我也看到它在设置了附件之后再次调用所选方法的两倍,在第二次调用中将else中的附件覆盖为none。 setSelected导致所选方法被调用两次并覆盖第二次调用的设置因为某种方式在第二次调用self.selected返回false;

更新:我通过在自定义单元类中创建布尔cellSelected属性并更改和检查其状态而不是设置和更改单元格的选定属性来解决问题,这也是更好的因为我可以支持多个选择tableview将来会更好。

2 个答案:

答案 0 :(得分:0)

视图加载后第二次有效吗?

它很可能与以下行有关:

  if(somelogichere){            
    [cell setSelected:YES];
  }

什么是somelogichere

第一次运行代码时,somelogichere您的selected属性可能不正确,具体取决于if(self.selected) self.accessoryType=UITableViewCellAccessoryCheckmark; else self.accessoryType=UITableViewCellAccessoryNone;

selected

确保在开头设置单元格的setSelected属性。或者更改{{1}}。

中的代码

HTH

答案 1 :(得分:0)

您尝试使用此代码帮助您

 - (void)setSelected:(BOOL)selected animated:(BOOL)animated 
{
    [super setSelected:selected animated:animated];
    UIImage *selectionBackground = [UIImage imageNamed:@"list_BG.jpg"];
    UIImageView *iview=[[UIImageView alloc] initWithImage:selectionBackground];

    self.selectedBackgroundView=iview;  
}

tableView cellForRowAtIndexPath方法:

cell.accessoryType = UITableViewCellAccessoryCheckmark;