У меня есть UITableView
с пользовательскими ячейками:
class customChatCell: UITableViewCell {
@IBOutlet weak var userName: UILabel!
@IBOutlet weak var userMessage: UILabel!
И у меня есть код для открытого URL-адреса, содержащийся в userMessage
:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let identifier = "ClientCell"
self.cell = self.tableView.dequeueReusableCell(withIdentifier: identifier) as? customChatCell
self.cell.selectionStyle = UITableViewCell.SelectionStyle.none
// Unpack message from Firebase DataSnapshot
let messageSnapshot = self.messages[indexPath.row]
guard let message = messageSnapshot.value as? [String: String] else { return cell }
let name = message[Constants.MessageFields.name] ?? ""
if let imageURL = message[Constants.MessageFields.imageURL] {
self.cell.userName.text = name
self.cell.hiddenLabel.isHidden = true
self.cell.userMessage.text = imageURL
let tap = UITapGestureRecognizer(target: self, action: #selector(FCViewController.tapFunction))
self.cell.addGestureRecognizer(tap)
if self.cell.userName.text == Auth.auth().currentUser?.displayName {
self.cell.userName.textAlignment = .right
self.cell.userMessage.textAlignment = .right
self.cell.hiddenLabel.textAlignment = .right
} else {
self.cell.userName.textAlignment = .left
self.cell.userMessage.textAlignment = .left
self.cell.hiddenLabel.textAlignment = .left
}
self.cell.setNeedsLayout()
} else {
let text = message[Constants.MessageFields.text] ?? ""
self.cell.userName.text = name
self.cell.userMessage.text = text
self.cell.hiddenLabel.isHidden = true
self.cell.hiddenLabel.isUserInteractionEnabled = false
if self.cell.userName.text == Auth.auth().currentUser?.displayName {
self.cell.userName.textAlignment = .right
self.cell.userMessage.textAlignment = .right
} else {
self.cell.userName.textAlignment = .left
self.cell.userMessage.textAlignment = .left
}
}
return cell
}
@objc func tapFunction(sender:UITapGestureRecognizer) {
var url = URL(string: self.cell.userMessage.text!)!
UIApplication.shared.open(url, options: [:], completionHandler: nil)
}
Но при нажатии налюбая ячейка, всегда открывается только та ссылка, которая содержится в последней ячейке .Независимо от того, на какую ячейку я щелкаю.
Как сделать так, чтобы при нажатии на ячейку открывалась конкретная ссылка, содержащаяся в определенном userMessage
?