首页 > 解决方案 > UITableViewNavigation 出现问题,在 segue 上传递数据

问题描述

我无法将数据UITableViewUIViewController. 尝试了几种方法,但都失败了。收到此错误

线程 1:EXC_BAD_INSTRUCTION(代码=EXC_I386_INVO)

当我运行项目时。

请参阅下面我尝试过的代码。

//Code on the UITableViewController

class ShonaHymnsUITableViewController: UITableViewController {
    var hymns : [Hymns] = Hymns.fetchHymns()

    //MARK: - UItableViewDataSource
    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return hymns.count
    }

    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "hymnCell", for: indexPath) as! HymnsTableViewCell

        let hymn = hymns[indexPath.row]
        cell.hymn = hymn
        return cell
    }

//    MARK: - NAVIGATION
    override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        tableView.deselectRow(at: indexPath, animated: true)
        self.performSegue(withIdentifier: "ShowHymnDetail", sender: indexPath)
    }

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        // TODO: Prepare for Hymn Detal segue
        if segue.identifier == "ShowShonaHymnListing" {
            let shonaHymnListingVC = segue.destination as! ShonaHymnsUITableViewController
            shonaHymnListingVC.hymns = hymns

        } else if segue.identifier == "ShowHymnDetail" {

            let indexPath = tableView.indexPathForSelectedRow
            let selectedHymn = hymns[(indexPath?.row)!]
            let hymnDetailVC = segue.destination as! ShonaHymnsViewController
               hymnDetailVC.hymn = selectedHymn
            }
    }
}

//Code on the ViewController that I want to receive the data
class ShonaHymnsViewController: UIViewController {


    @IBOutlet weak var hymnNumber: UILabel!
    @IBOutlet weak var hymnTitle: UILabel!
    @IBOutlet weak var hymnDetail: UITextView!

    var hymn: Hymns!

    override func viewDidLoad() {
        super.viewDidLoad()

        hymnNumber.text = hymn.hymnNumber
        hymnTitle.text = hymn.hymnTitle
        hymnDetail.text = hymn.hymnDetail

    }

}

这是一个赞美诗书应用程序,我希望在接收者视图控制器上显示完整的赞美诗细节。请参阅图像以了解应用程序的设置

标签: iosswift

解决方案


颠倒顺序

self.performSegue(withIdentifier: "ShowHymnDetail", sender: indexPath)
tableView.deselectRow(at: indexPath, animated: true) 

为了这

hymns[(indexPath?.row)!]

有一个有效的值


推荐阅读