在Swift 4中的两个TableViewController之间传递数据不起作用

时间:2018-08-24 07:51:22

标签: ios swift xcode swift4

我试图在Swift中的两个组件之间传递简单的Int64,但是从未设置该值。

这是我的第一个tableViewController,我要从其中传递数据2

func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?){
        if (segue.identifier == "transactionDetailSegue") {
            let transactionDetailViewController = segue.destination as? TransactionDetailTableViewController
            transactionDetailViewController?.id = 2
        }
    }

这是我想收到的地方:

import UIKit

class TransactionDetailTableViewController: UITableViewController {

    @IBOutlet weak var nameText: UILabel!

    var id = 0;

    override func viewDidLoad() {
        super.viewDidLoad()
        dump(id)
    }

}

我两次确保segue标识符是正确的,并检查了各种教程,但我仍然不确定出什么问题。

谢谢

1 个答案:

答案 0 :(得分:1)

prepareForSegue的签名是错误的,因此永远不会被调用。

在Swift 3+中,正确的签名是

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {

并强行解开TransactionDetailTableViewController

let transactionDetailViewController = segue.destination as! TransactionDetailTableViewController

如果一切都正确连接,则代码不得崩溃。如果这样做,则表明存在设计错误。