Próbuję wysłać szczegóły z wybranej komórki w NSTableView do innego ViewController.

Mam przycisk:

@IBAction func detailButtonTapped(_ sender: Any) {
    performSegue(withIdentifier: "toDetailsVC", sender: self)
}   

I przygotować się do Segue:

override func prepare(for segue: NSStoryboardSegue, sender: Any?) {
    let row = self.tableView.row(for: sender as! NSButton)
    if segue.identifier == "toDetailsVC" {
        
        let destination = segue.destinationController as! DetailsVeiwController
        destination.name = orders[row].name!
    }
}    

Błąd:

Nie można rzucić wartości typu "test.Viewcontroller" (0x100022B98) do "NSButton" (0x7FFF8B59B260).

Kiedy sprawdzam let row = self.tableView.row(for: sender as! NSButton) wewnątrz przycisku, działa dobrze.
Czy jestem tutaj? Gdzie to się dzieje?

0
Anvil 23 listopad 2020, 11:09

1 odpowiedź

Najlepsza odpowiedź

self jest kontrolownikiem widoku. Musisz przejść sender, który jest przyciskiem. I polecam zadeklarować parametr sender jako typ betonu

@IBAction func detailButtonTapped(_ sender: NSButton) {
    performSegue(withIdentifier: "toDetailsVC", sender: sender)
}
1
vadian 23 listopad 2020, 08:12