[英]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
上的每個單元格都AboutUsTableView
到DedicatedVolunteerViewController
。 我希望能夠擁有一個可以多次使用的視圖控制器(即人們的個人資料)。
當我單擊表視圖中的任何單元格時,出現以下錯誤:
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.