IOS / Swift: передача объекта в табличном виде в контроллер подробного представления - PullRequest
0 голосов
/ 05 июня 2018

Я пытаюсь взять объект из табличного представления и передать его в подробный вид, что я умею делать в Objective-C, но учусь впервые Swift.Однако мой код не получает строку из пути индекса или объекта.

Вот мой код.

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        print("segue")
        if segue.identifier == "showDetail"{
                    if let destinationVC = segue.destination as? detailVC {
                                    )
                if let indexPath = self.tableView.indexPathForSelectedRow {      
                    print("row%@",indexPath)//Prints as nil
                let thisItem = myItems[indexPath.row]//never gets here
    destinationVC.item = thisItem 
            }
        }
    }
    }

Может кто-нибудь понять, почему я не получаю строку или объект?Заранее спасибо за любые предложения.

Редактировать:

Я получил его для работы со следующими:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if segue.identifier == "showDetail" {

            let indexPath: NSIndexPath = self.tableView.indexPathForSelectedRow! as NSIndexPath

            let anItem: myItem = myItems[indexPath.row];

            let destVC = segue.destination as? detailVC
            destVC?.item = anItem

        }
    }

Ответы [ 2 ]

0 голосов
/ 05 июня 2018

Почему вы не используете эти методы для сохранения значения выбранной строки или элемента?а потом выполнить сеег?

tableView(_:didDeselectRowAt:)
tableView(_:didSelectRowAt:)
0 голосов
/ 05 июня 2018

Реализуйте метод UITableViewDelegate,

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    let item = myItems[indexPath.row]
    self.performSegue(withIdentifier: "showDetail", sender: item)
}

, затем реализуйте ниже,

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "showdetail" {
        let detailController = segue.destination as! detailVC
        detailController.item = sender as! Your_Item
    } 
}
...