2015-04-25 2 views
1

Я создаю пользовательскую ячейку, и я добавляю в нее субвью для текста в основном. Сначала субблоки не удалялись, когда ячейка была повторно использована, поэтому текст будет перезаписываться и портиться очень плохо. Затем я добавил этот цикл for к функции, и он решил мою проблему, за исключением того, что он также полностью удаляет мой ImageView, и он никогда не добавляется повторно, поэтому в моем представлении таблицы отсутствует изображение, которое должно быть связано с каждой ячейкой.Удаление всех подзадач из UITableViewCell, за исключением imageView

Оператор if не работает, но я явно не использовал cell.addSubView(), как это сделал ящик для ярлыков ячеек, поэтому мне интересно, связано ли это с этим. Я googled и обнаружил, что большинство людей говорят, что это сработало для них, но я просто не могу понять это.

Почему это удаляет мои изображения, почему они не придут, как и другие подзаголовки, и как я могу это исправить?

У меня есть следующий код:

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCellWithIdentifier("cell") as! UITableViewCell 
    for subView in cell.subviews { 
     if subView as? NSObject != cell.imageView { 
      subView.removeFromSuperview() 
     } 
    } 
    var statusImage = UIImage(named:imageConfigration(indexPath.row))! 
    cell.imageView?.image = statusImage 
    // ... 
} 
+1

Вы, вероятно, с удалением contentView клетки. Попробуйте выполнить цикл с помощью cell.contentView – Tobias

+0

Если вы создали пользовательскую ячейку, вы должны подклассифицировать ее и добавить свои подпрограммы в методе init ячейки. Если вы это сделаете, вам не придется беспокоиться об их удалении, когда ячейка повторно используется. – rdelmar

ответ

0

Дайте вашему ImageView тег в раскадровке или XIb или программно, что вы используете. Теперь в цикле for subviews проверьте, равен ли тег subview равным тегу для изображения, и не удаляйте его.

Еще один вариант решения этого вопроса, если он соответствует вашему требованию, состоит в том, чтобы скрыть все элементы, добавленные в ячейку, кроме изображения. Это будет намного быстрее, чем зацикливание в subviews и удаление его, вы никогда не знаете, что все subview подключены к ячейке, а затем вы добавили iOS, но это, если оно соответствует вашему req. Дайте мне знать, в случае каких-либо беспокойства

Это, как вы можете сделать это

cell.textLabel.hidden = YES; 
Смежные вопросы