didSelectRowAtIndexPath不起作用,Swift 3
谁能看到世界上为什么不会调用didSelectRowAtIndexPath?我已经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)
请注意_
,didSelectRowAt
vs
didSelectRowAtIndexPath
,与您更新的其他对象(也采用了相同的“样式”)一样,但不是。
删除该行,然后让XCode进行自动补全。否则,您可以将其替换为文档中的那个。
以上是 didSelectRowAtIndexPath不起作用,Swift 3 的全部内容, 来源链接: utcz.com/qa/400045.html