2015-08-02 3 views
1

Я хочу скрыть/показать UIView в UITableViewCell, но много раз он отображает его не по ошибке UITableViewCell. Какие-либо предложения?UITableViewCell не скрывает UIView должным образом


функция 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; 

      } 
+0

вы можете любезно уточнить ваш вопрос немного больше, что на каком основании вы хотите, чтобы скрыть/показать, что конкретный вид. –

+0

Почему у вас жестко закодированные теги? На что они соответствуют? Если ячейка имеет представление с тегом 22, это огромная ячейка с 22 или более подвидными? Возможно, вы случайно обмениваетесь объектами просмотра между несколькими ячейками? Почему вы используете теги вообще, когда вы можете использовать @IBOutlets? – BaseZen

ответ

1

Его, безусловно, не самое лучшее решение, чтобы использовать теги вместо подклассов UITableViewCell и использовать IBOutlets.

Если бы подкласс UITableViewCell вы можете переопределить prepareForReuse() и сбросить hidden свойство верно

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

Попробуйте определения else блок тоже. Как только это сработало для меня.

if isSecret == true 
{ 
    cellHiddenGemView?.hidden = false; 
} 
else 
{ 
    cellHiddenGemView?.hidden = true; 
}  
Смежные вопросы