如何在 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)
}
现在只要触摸一个单元格,它就会显示一个警报
我是 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)
}
现在只要触摸一个单元格,它就会显示一个警报