簡體   English   中英

在運行中添加數據不會在運行時識別SecondViewController類

[英]Add data in segue won't recognize SecondViewController class when running

所以這是我的第一個視圖控制器類:

import UIKit

class AboutUsTableViewController: UITableViewController {

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        let volunteerPageVC = segue.destination as! DedicatedVolunteerViewController
        // Idk why I have to use 'as!' instead of 'as'. Xcode made me do it
        volunteerPageVC.person = "John Smith"
    }

}

這是我的第二個視圖控制器類:

import IUKit

class DedicatedVolunteerViewController: UIViewController {

    var person: String?

    @IBOutlet weak var HeaderTitle: UILabel!

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.

        HeaderTitle.text = "About " + person!;
    }
}

在我的主故事AboutUsTableView上的每個單元格都AboutUsTableViewDedicatedVolunteerViewController 我希望能夠擁有一個可以多次使用的視圖控制器(即人們的個人資料)。

當我單擊表視圖中的任何單元格時,出現以下錯誤:

2016-12-26 11:44:27.075 MyApp iOS[8350:493673] Unknown class _TtC20MyApp_iOS31DedicateVolunteerViewController in Interface Builder file.
2016-12-26 11:44:29.698 MyApp iOS[8350:493673] Unknown class _TtC20MyApp_iOS31DedicateVolunteerViewController in Interface Builder file.

我很困惑,因為當我編譯應用程序時,它沒有給出關於“未知類”的錯誤,也沒有表明我需要將DedicatedVolunteerViewController添加/導入到AboutUsTableViewController中才能使用它。 我什至試圖導入它,但是Xcode不允許我並一直給我錯誤。

PS:考慮到大多數在線地方,我很難解決有關swift或obj-c較舊版本的文檔,這使查找如何使用新版本的代碼變得很困難。

聽起來故事板場景中的類名稱錯誤。 從表視圖控制器到第二個視圖控制器,繼續執行以下步驟。 然后選擇目標視圖控制器的場景,選擇視圖控制器本身,然后選擇“識別檢查器”。 檢查目標視圖控制器的類。 從收到的錯誤中,聽起來它的類是_TtC20MyApp_iOS31DedicateVolunteerViewController而不是DedicateVolunteerViewController

Swift使用“可選”,這實際上意味着可以為空的對象。 可選值可以為有效值或nil。 建議您使用“ guard”語句來處理可選內容。

因此,您的prepareForSegue應該如下所示:

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    guard let volunteerPageVC = segue.destination as? DedicatedVolunteerViewController else {
        //Handle the nil value, log, etc
        return
    }
    volunteerPageVC.person = "John Smith"
}

明確展開了可選項-意味着它必須具有值,否則應用程序將崩潰。 您應盡可能避免使用它們,並使用? 如我上面顯示的那樣,但帶有警衛聲明。 在上面的代碼中,它嘗試將segue.destination強制轉換為DedicatedVolunteerViewController,但如果不能,它將落入Guard語句中(意味着結果為nil)。

在Apple網站上,有很多關於可選配件的很好的信息。 檢出: Swift基礎

至於您的特定錯誤,它看起來像是拼寫錯誤。 錯誤是指“ DedicateVolunteerViewController”(缺少“ d”),並且您的類名稱是“ DedicatedVolunteerViewController”

暫無
暫無

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

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