【问题标题】:Passing data between two TableViewControllers in Swift 4 does not work在 Swift 4 中的两个 TableViewController 之间传递数据不起作用
【发布时间】:2018-08-24 07:51:21
【问题描述】:

我试图在 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 标识符是正确的,并检查了各种教程,但我仍然不确定出了什么问题。

谢谢

【问题讨论】:

标签: ios swift xcode swift4


【解决方案1】:

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

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

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

并强制解开TransactionDetailTableViewController

let transactionDetailViewController = segue.destination as! TransactionDetailTableViewController

如果一切都正确连接,代码一定不会崩溃。如果确实如此,则表明存在设计错误。

【讨论】:

  • 函数的声明其实是不对的,这解决了我的问题,谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-11-08
  • 1970-01-01
  • 2013-02-17
  • 2019-11-14
  • 1970-01-01
  • 1970-01-01
  • 2015-09-13
相关资源
最近更新 更多