gpt4 book ai didi

ios - 如何将 TableViewCell 中的数据作为按钮执行?

转载 作者:可可西里 更新时间:2023-11-01 01:49:50 26 4
gpt4 key购买 nike

enter image description here我正在创建一个应用程序,菜单列在 TableViewCell 中。菜单已经在单元格内,但不幸的是,当我单击其中一个菜单时,它没有执行菜单应该执行的操作。例如,我点击了 logout label 它没有执行 showlogoutDialog。我已经使用了断点,但表格内的数据似乎只是纯文本。下图是表格的示例输出。希望你能就这个问题给出一些解决方案。谢谢。

Screen Record

DoctorMenuTableCell.swift

class DoctorMenuTableCellTableViewCell: UITableViewCell {


@IBOutlet weak var titleLabel: UILabel!


override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
}

override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)

// Configure the view for the selected state
}

MoreOptionViewController.swift

private let menuIdentifier = "MenuCell"

class MoreOptionViewController: UIViewController {

@IBOutlet weak var doctorMenuTableView: UITableView!

}

override func viewDidLoad() {
super.viewDidLoad()

self.doctorMenuTableView.dataSource = self
self.doctorMenuTableView.delegate = self

}

//MARK: Function

func showLogoutDialog() {
//create alert
let alert = UIAlertController(title: "Confirmation", message: "Are you sure you want to logout?", preferredStyle: .alert)

//add the actions (button)
alert.addAction(UIAlertAction(title: "No", style: .default, handler: nil))
alert.addAction(UIAlertAction(title: "Yes", style: .default, handler: { (alert) in
self.logout()
}))
self.present(alert, animated: true, completion: nil)

}

func logout() {
NotificationCenter.default.post(name: Notification.Name(deleteUserDataNotificationName), object: nil)
}

}


extension MoreOptionViewController: UITableViewDataSource, UITableViewDelegate {

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
switch section {
case 0:
return Menu.More.items.count
default: return 0
}
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let row = indexPath.row

switch indexPath.section {
case 0:
let cell = tableView.dequeueReusableCell(withIdentifier: menuIdentifier, for: indexPath) as! DoctorMenuTableCell

cell.titleLabel.text = Menu.More.items[row].value

if row == 1{
cell.titleLabel.textColor = UIColor.red
cell.accessoryType = .none
}

return cell
default:
return UITableViewCell()
}
}

func tableView(_tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
switch indexPath.section {
case 0: break
case 1:
switch indexPath.row {
case 0:
let alertController = UIAlertController(title: "Info", message: "No available data", preferredStyle: .alert)
alertController.addAction(UIAlertAction(title: "OK", style: .default))

self.present(alertController, animated: true, completion: nil)
case 1: showLogoutDialog()
default: break
}

default: break

}

}

最佳答案

检查你的 Did Select 方法,你的 cellsSection 0 下并且 Did Select第 1 节

同时检查 TableViewCellisUserInteractionEnabled 并在 didSelectRowAt 上添加断点并检查哪个开关案例正在运作。

代码:

func numberOfSections(in tableView: UITableView) -> Int {
return 2
}


func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
switch section {
case 0:
return Menu.More.items.count
default: return 0
}
}


func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

switch indexPath.section {
case 0:
let cell = tableView.dequeueReusableCell(withIdentifier: menuIdentifier, for: indexPath) as! DoctorMenuTableCell
cell.titleLabel.text = Menu.More.items[row].value

if indexPath.row == 1{
cell.titleLabel.textColor = UIColor.red
cell.accessoryType = .none
}

return cell
default:
return UITableViewCell()
}
}



func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
switch indexPath.section {
case 1: break
case 0:
switch indexPath.row {
case 0:
let alertController = UIAlertController(title: "Info", message: "No available data", preferredStyle: .alert)
alertController.addAction(UIAlertAction(title: "OK", style: .default))

self.present(alertController, animated: true, completion: nil)
break
case 1: showLogoutDialog()
break
default: break
}
break
default: break

}

}

关于ios - 如何将 TableViewCell 中的数据作为按钮执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55371239/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com