Почему текст на UICollectionViewCell исчезает при нажатии? - PullRequest
3 голосов
/ 14 июня 2019

У меня есть UICollectionView. Он заполнен ячейками, которые включают изображение и метку.

Когда кто-то нажимает на ячейку, текст просто исчезает. Как я могу остановить это?

Дополнительная информация:

Представление коллекции находится внутри контейнера, подключенного к baseVC.

Клетки и большая часть их содержимого добавляются в файл xib. Все отображается правильно. Ожидайте при нажатии, где текст исчезает, а затем появляется снова.

Также обратите внимание, что метка не исчезает, только текст.

Пользовательский текст добавляется при вызове ячеек: func setup(profImage: String, contentView: String, titleLabel: String, subtitleLabel: String), и даже при отключении добавления текста ярлыки по умолчанию по-прежнему исчезают при нажатии.

Ответы [ 4 ]

2 голосов
/ 21 июня 2019

Я бы удостоверился, что метка добавлена ​​к contentView ячейки, а не только к самому верхнему виду ячейки. Возможно, способ установки xib неправильный. Убедитесь, что это UICollectionViewCell в xib и т. Д. Вы также можете опубликовать фотографии того, как вы установили xib.

Кроме того, для отладки я бы удалил любой код, который имеет дело с ячейкой, которая не вращается вокруг метки (например, удалял анимации, пока вы не исправили ошибку). Это позволит вам сосредоточиться на проблеме. Или, иначе, просто начните с нуля и заново создайте ячейку (только с меткой). Получение ярлыка для показа - это не ракетостроение, но вы можете сделать это ракетостроением, если не будете постепенно строить то, что происходит.

Другая потенциальная проблема - макет. Правильно ли выполнен макет? И, может быть, он ломается (по некоторым причинам), когда вы выделяете.

0 голосов
/ 21 июня 2019

Вы добавили viewController в представление?

Если да, то добавьте следующий код перед добавлением Viewcontroller в подпредставление.

let vc = UIStoryboard(name: "YourStoryBoard", bundle:Bundle.main)
.instantiateViewController(withIdentifier: "YourViewController") as! YourViewController

self.addChildViewController(vc)
vc.didMove(toParentViewController: self)
self.view.addSubview(vc.view)
0 голосов
/ 21 июня 2019

Попробуйте использовать выделенное свойство цвета текста UILabel:

Цвет выделения, применяемый к тексту метки.

@ свойство (неатомное, сильное) UIColor * selectedTextColor;

0 голосов
/ 18 июня 2019

Вы пытались сбросить текст после завершения анимации?

   let cell = collectionView.cellForItem(at: indexPath)
    let thumbnail = postArray[indexPath.item].media[0].thumbnail!
            let date = ConvertDate(mediaTimestamp: postArray[indexPath.row].media[0].postTimeStamp!, isItForP3: false).getDate!

    UIView.animatewithDuration: 0.1, delay: 0.0, options: UIView.AnimationOptions.curveLinear, animations: {
            cell!.transform = CGAffineTransform.identity.scaledBy(x: 1.0, y: 1.0)

    }, completion: { (finished: Bool) in
      if finished {
        cell.setup(profImage: "\(self.postArray[indexPath.item].user.profileImageUrlString!)", contentView: thumbnail, titleLabel: postArray[indexPath.item].user.username!, subtitleLabel: date)
      }  
    })

Возможно, есть лучший способ сделать это.

...