ios - uitableviewcell - uitableviewcontroller swift 4
didSelectRowAtIndexPath no funciona, Swift 3 (1)
Swift 3 modificó la firma del método (muchos métodos también, nuevas "reglas" / estilo)
Reemplazar:
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: IndexPath)
con
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
Observe el _
, el didSelectRowAt
vs didSelectRowAtIndexPath
, como los otros que actualizó (que también se adaptó el mismo "estilo"), pero no este.
Elimine la línea y deje que XCode realice el autocompletado. De lo contrario, puedes reemplazarlo por el del doc.
¿Alguien puede ver por qué en el mundo didSelectRowAtIndexPath no se llamaría? He revisado tres veces por delegate
tanto en el código como en el guión gráfico.
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
}
}
}