UITableViewCell没有正确隐藏UIView

时间:2015-08-02 00:27:21

标签: ios swift uitableview

我想隐藏/取消隐藏UIView中的UITableViewCell,但很多时候它会为错误的UITableViewCell取消隐藏它。有什么建议吗?

cellForRowAtIndexPath函数

  func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

        var cell = tableView.dequeueReusableCellWithIdentifier("locationCell", forIndexPath: indexPath) as? UITableViewCell
        var viewWithImage  =  cell?.viewWithTag(22) as UIView!
        var cellHiddenGemView  =  viewWithImage?.viewWithTag(23) as UIView!                        
        var locationObject : PFObject = locationObjects[indexPath.row] as! PFObject
        var isSecret =  locationObject["isSecret"] as! Bool

        cellHiddenGemView?.hidden = true;

                if isSecret == true
                {
                        cellHiddenGemView?.hidden = false;
                       //this view is unhides for the wrong indexes also
                }        

                return cell;

            }

2 个答案:

答案 0 :(得分:1)

它绝对不是使用标签而不是子类化UITableViewCell并使用IBOutlets的最佳解决方案。

如果你是UITableViewCell的子类,你可以覆盖prepareForReuse() 并将hidden属性重置为 true

func prepareForReuse()
{
   self.HiddenGemView?.hidden = true
}

答案 1 :(得分:0)

尝试定义else块。一旦这对我有用。

 if isSecret == true
 {
    cellHiddenGemView?.hidden = false;
 } 
 else
 {
    cellHiddenGemView?.hidden = true;
 }