如何在 Table 视图单元格和 .xib 中添加警报操作 (swift 3)

How to add Alert Action in Table view Cell & .xib (swift 3)

我是 swift 世界的超级新手。

我在 Main.Storyboard 中使用 UITableView,在 .xib 文件中,我使用 UITableViewCell

这是 ViewController.swift 中与 UITableView 相关的一些代码:

@IBOutlet weak var friendsTableView: UITableView!

override func viewDidLoad() {
    super.viewDidLoad()

    friendsTableView.register(UINib(nibName: "TableViewCell", bundle: nil), forCellReuseIdentifier: "TableViewCell")
}

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return contacts.count
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell : TableViewCell = tableView.dequeueReusableCell(withIdentifier: "TableViewCell", for: indexPath) as! TableViewCell
    let entry = contacts[(indexPath as NSIndexPath).row]

    cell.configureWithContactEntry(entry)
    cell.layoutIfNeeded()

    return cell
}

这是 TableViewCell.swift 中的代码,与 TableViewCell.xib 相关。

@IBOutlet weak var contactNameLabel: UILabel!
@IBOutlet weak var contactPhoneLabel: UILabel!

    override func layoutIfNeeded() {
    super.layoutIfNeeded()
}

func configureWithContactEntry(_ contact: ContactEntry) {
    contactNameLabel.text = contact.name
    contactPhoneLabel.text = contact.phone ?? ""

}

并且,在 TableViewCell.xib 中,我使用 UITableViewCell,2 个标签。

在这种情况下, 我如何在按下 table 单元格之一时添加 AlertAction?

您必须将 alertViewController 添加到 TableViewController 而不是单元格本身。 但是,正如您希望在用户触摸单元格后显示警报视图一样,只需实施 tableViewDidselectRow 并从那里显示您的 alertView

 override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

    let alert = UIAlertController(title: "Alert", message: "This is an Alert", preferredStyle: .alert)
    alert.addAction(UIAlertAction(title: "OK", style: .default, handler: nil))
    present(alert, animated: true, completion: nil)
}

现在只要触摸一个单元格,它就会显示一个警报