我正在使用带有JSQMessageCollectionViewCell
的JSQMessage库。如何在方法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
我该如何解决这个问题?谢谢你的帮助!
答案 0 :(得分:0)
我建议你在storyBoard中添加这个checkBox,并通过将其设置为isHidden属性使其隐藏,并在控制器上将一个全局Bool设置为false。所以当你的bar按钮被cliked使这个变量为true并重新加载表。
并在cellForRowAtIndexPath中检查它是这样的。
var shouldShowCheckBox = false
func barButtonTaped(){
shouldShowCheckBox = !(shouldShowCheckBox)
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
btnCheckBox.isHidden = shouldShowCheckBox
}
答案 1 :(得分:0)
您也可以访问类似的内容。
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"
}
答案 2 :(得分:0)
您可以使用 cellForItem
在 collectionView 委托之外访问您的单元格。在本例中,MerchantCell
位于第 4 行。
if let merchantCell = collectionView.cellForItem(at: IndexPath(row: 4, section: 0)) as? MerchantCell {
merchantCell.refreshMerchant()
}