didSelectRowAtIndexPath not working, Swift 3

ios swift xcode uitableview

20816 просмотра

1 ответ

Can anyone see why in the world didSelectRowAtIndexPath would not be called? I have triple checked by delegate both in the code and in storyboard.

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() {

    tableView.delegate = self
    tableView.dataSource = self

override func 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)
    let row = indexPath.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)
    default: break


Автор: TheValyreanGroup Источник Размещён: 12.11.2019 09:41

Ответы (1)

19 плюса


Swift 3 modified the signature of the method (a lot of methods too, new "rules"/style)

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: IndexPath) with
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)

Notice the _, the didSelectRowAt vs didSelectRowAtIndexPath, like the other ones you updated (which adapted also the same "style"), but not this one.

Remove the line and let XCode do the autocompletion. Else, you can just replace it with the one from the doc.

Автор: Larme Размещён: 08.11.2016 04:37
Вопросы из категории :