2016-11-08 21 views
10

Dünyanın herhangi bir yerinde neden SelectRowAtIndexPath çağrılmayacağını görebiliyor musunuz? Hem kodda hem de storyboard'da delegate numaralı telefonu kontrol ettim. SwiftdidSelectRowAtIndexPath çalışmıyor, Swift 3

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 

    } 
} 

} 
+3

'didSelectRowAtIndexPath:' imzasını Swift 3 olanına güncellemediniz. Doc: 'isteğe bağlı func tableView (_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)', '' 'didSelectRowAt' ve' didSelectRowAtIndexPath' gibi, güncelleştirdiğiniz diğer gibi, ama bu değil. Satırı kaldırın ve XCode'un otomatik tamamlamayı yapmasına izin verin. Else, sadece dokümanın biriyle değiştirebilirsiniz. – Larme

+0

Öldü! Teşekkürler dostum. – TheValyreanGroup

cevap

15

3 yöntemin imzasını modifiye (çok yöntemden çok, yeni bir "kurallar"/tarzı)

değiştirin:
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: IndexPath) Bildirimi _ func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)


ile, didSelectRowAt vs didSelectRowAtIndexPath, güncellediğiniz diğerler gibi (aynı "stil" de uyarlanmıştır), ama bu değil.

Satırı kaldırın ve XCode'un otomatik tamamlamayı yapmasına izin verin. Else, sadece dokümanın biriyle değiştirebilirsiniz.