谁能看到世界上为什么不会调用didSelectRowAtIndexPath?我已经delegate在代码和情节提要中对它进行了三重检查。
delegate
class AddCard: UIViewController,UIPopoverPresentationControllerDelegate, UITableViewDataSource, UITableViewDelegate { @IBOutlet weak var cardView: UIView! @IBOutlet weak var tableView: UITableView! let tableItems = ["Background Color","Background Image","Font Style","Font Color"] let cellID = "cell" override func viewDidLoad() { super.viewDidLoad() tableView.delegate = self tableView.dataSource = self } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } func setBackgroundColor (_ color: UIColor) { cardView.backgroundColor = color } func numberOfSectionsInTableView(tableView: UITableView) -> Int { return 1 } func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return tableItems.count } func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifier: cellID, for: indexPath as IndexPath) let row = indexPath.row cell.textLabel?.text = tableItems[row] return cell } func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: IndexPath) { tableView.deselectRow(at: indexPath as IndexPath, animated: true) print(indexPath.row) let row = indexPath.row switch(row){ case 0: let popoverVC = storyboard?.instantiateViewController(withIdentifier: "colorPickerVC") as! ColorPickerViewController popoverVC.modalPresentationStyle = .popover popoverVC.preferredContentSize = CGSize(width: 284, height: 446) if let popoverController = popoverVC.popoverPresentationController { popoverController.sourceView = self.view popoverController.sourceRect = CGRect(x: 0, y: 0, width: 85, height: 30) popoverController.permittedArrowDirections = .any popoverController.delegate = self popoverVC.delegate = self } present(popoverVC, animated: true, completion: nil) break default: break } } }
Swift 3修改了方法的签名(很多方法,新的“规则” /样式)
替换 func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: IndexPath)为 func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: IndexPath)
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
请注意_,didSelectRowAtvs didSelectRowAtIndexPath,与您更新的其他对象(也采用了相同的“样式”)一样,但不是。
_
didSelectRowAt
didSelectRowAtIndexPath
删除该行,然后让XCode进行自动补全。否则,您可以将其替换为文档中的那个。