簡體   English   中英

在Swift 3中使用prepareForSegue設置對象變為nil

[英]assing object with prepareForSegue becomes nil in Swift 3

先生,

我正在嘗試實現一個表單並在下面傳遞數據對象

import UIKit
import GRDB

class Staff: Record {
    var id: Int64?
    var compId: Int64 = 0 
     var chiName: String  = ""
    var engName: String  = ""

到表視圖控制器,以加載子記錄。 當涉及到實現時,它似乎變得空了,沒有任何意義。 您能告訴我在這種情況下如何確保第二個視圖控制器不接收空對象嗎?

以下是日志:

在此處輸入圖片說明 這是我的代碼:

第一個UIView控制器

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    print("view salary X ")
    print(dummy)
    print(dummy.id ?? "0")

    if let secondController = segue.destination as? ViewSalaryTableViewController {
        secondController.dummyStaff = dummy
    }
} 

第二個UITableView控制器:

  public var dummyStaff : Staff?

override func viewDidLoad() {
    super.viewDidLoad()
..
    print("arrive dummyStaff")
    print(dummyStaff ?? "njull")
}

情節提要局部草稿:

在此處輸入圖片說明

故事板設置

在此處輸入圖片說明

確保secondController的類型轉換正常工作。 如果您有多個segue,請使用segue標識符進行區分。 下面的代碼對我來說很好:

class MyBook {
    var name:String!
}

ViewController 1

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if segue.identifier == "Vc1ToVc2" {
            let book = MyBook()
            book.name = "Harry"
            if let destinationVc = segue.destination as? ViewController2 {
                destinationVc.book = book
            }
        }
    }

ViewController 2

var book:MyBook?

    override func viewDidLoad() {
        super.viewDidLoad()
        print(book?.name ?? "No name")
    }

版畫:哈里

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM