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)

请注意_didSelectRowAtvs

didSelectRowAtIndexPath,与您更新的其他对象(也采用了相同的“样式”)一样,但不是。

删除该行,然后让XCode进行自动补全。否则,您可以将其替换为文档中的那个。

以上是 didSelectRowAtIndexPath不起作用,Swift 3 的全部内容, 来源链接: utcz.com/qa/400045.html

回到顶部