Kann jemand sehen, warum in der Welt didSelectRowAtIndexPath nicht aufgerufen würde? Ich habe dreifache Überprüfung durch delegate
sowohl im Code als auch im Storyboard.didSelectRowAtIndexPath funktioniert nicht, 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
}
}
}
Sie haben die Signatur von 'didSelectRowAtIndexPath:' nicht auf die Swift 3-Version aktualisiert. Aus dem doc: 'Optional func tableView (_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)', beachten Sie '_' das 'didSelectRowAt' gegenüber' didSelectRowAtIndexPath', wie das andere, das Sie aktualisiert haben, aber nicht dieses. Entfernen Sie die Zeile, und lassen Sie XCode die Autovervollständigung durchführen. Andernfalls können Sie es einfach durch das Dokument ersetzen. – Larme
Getötet! Danke, Mann. – TheValyreanGroup