Как получить доступ к значению ячейки вне метода в collectionView в Swift? - PullRequest
0 голосов
/ 19 мая 2018

Я использую библиотеку JSQMessage с JSQMessageCollectionViewCell.Как я могу получить доступ к значению ячейки вне метода cellForItem atIndexPath.

Вот метод

override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    let cell = super.collectionView(collectionView, cellForItemAt: indexPath) as! JSQMessagesCollectionViewCell

    if Array_Messages[indexPath.item].senderId == senderId {
        cell.textView?.textColor = UIColor.white
        cell.cellBottomLabel.textInsets = UIEdgeInsetsMake(0, 0, 0, 35)
        let second = ClassMessages[indexPath.row].Time.doubleValue
        let time = Date(timeIntervalSince1970: second)
        let dateFormatter = DateFormatter()
        dateFormatter.dateFormat = "HH:mm"

        cell.cellBottomLabel.text = "\(String(describing: newMess.Status!)) \(dateFormatter.string(from: time))"  
    } 
    return cell
}

Я пытаюсь сделать это, но получил ошибку

@IBAction func btTrash(_ sender: Any) {
    let indexPath = IndexPath.init(row: 0, section: 0)
    let cell = collectionView.cellForItem(at: indexPath) as! JSQMessagesCollectionViewCell
    print("aaa \(cell?.cellBottomLabel.text)")
}

Ошибка Thread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional

Как я могу это исправить?Спасибо за вашу помощь!

Ответы [ 2 ]

0 голосов
/ 05 января 2019

Вы также можете получить доступ к чему-то подобному.

class RegistrationVc: UIViewController {

    var objCell = RegistrationCell()

    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "RegistrationCell", for: indexPath) as! RegistrationCell
        objCell = cell
        return cell
    }
    @IBAction func btnContinue(_ sender: UIButton) {

            objCell.txtUserName.errorMessage = "please enter user name"
     }
0 голосов
/ 19 мая 2018

Я предлагаю вам добавить этот checkBox в storyBoard и сделать его скрытым, установив true для его свойства isHidden, и на вашем контроллере взять один глобальный Bool, установленный как false.поэтому, когда ваша кнопка бара нажата, сделайте эту переменную true и перезагрузите таблицу.

и в cellForRowAtIndexPath отметьте это следующим образом.

var shouldShowCheckBox = false

func barButtonTaped(){
shouldShowCheckBox = !(shouldShowCheckBox)
}

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
      btnCheckBox.isHidden = shouldShowCheckBox        

    }
...