猿问

didSelectRowAtIndexPath无效,Swift 3

任何人都可以看到为什么世界上没有调用SelectRowAtIndexPath会被调用?我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)

        }

    }

}


}


青春有我
浏览 940回答 2
2回答

芜湖不芜

Swift 3修改了方法的签名(很多方法,新的“规则”/样式)替换:func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: IndexPath)用func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)注意_,didSelectRowAtvs didSelectRowAtIndexPath,就像你更新的其他(也适用于相同的“风格”),但不是这个。删除该行,让XCode执行自动完成。否则,您可以将其替换为doc中的那个。

月关宝盒

您没有更新didSelectRowAtIndexPath:Swift 3 的签名。从DOC: optional func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath),注意到_了didSelectRowAtVS didSelectRowAtIndexPath,像其他一个你更新,但不是这一个。删除该行,让XCode执行自动完成。否则,您可以将其替换为doc中的那个。
随时随地看视频慕课网APP
我要回答