簡體   English   中英

根視圖控制器Swift

[英]Root View Controller Swift

我的應用程序委托中有一個函數,該函數將一個項目追加到名為ViewController.swift的文件中的數組中,然后我想在該文件中重新加載tableview。 我嘗試這樣做:

let vc = ViewController()
let navigationController = UINavigationController(rootViewController: vc)
window!.rootViewController = navigationController
println(vc.messages)

//1        vc.messages.append(message.data.message as! String)
//2        vc.MessageTableView?.reloadData()

第1,2行是我設置斷點的地方。 它似乎在編號2的行后中斷。

我得到的確切錯誤是

致命錯誤:解開Optional值時意外發現nil

我相信我的問題是我錯誤地設置了根視圖控制器。

編輯#1

窗口在頂部聲明。

如果我這樣運行我的代碼:

    let vc = ViewController()
    messages.append(message.data.message as! String)
    vc.MessageTableView?.reloadData()
    println(messages)

然后,我可以看到將正確的數據放入了數組(在這種情況下我將其設置為全局),但是該表在View控制器中沒有得到更新。

您的委托功能的實現是什么? 將表視圖放入情節提要中之后,必須將表視圖連接到ViewController.swift。 將控件從tableview拖動到viewcontroller的頂部(黃色圓圈),將出現一個黑色彈出窗口,執行兩次,每次單擊數據源並委托。 然后在viewcontroller.swift文件中實現它們在本教程中顯示的功能。 您無需修改​​AppDelegate.swift文件!

https://www.weheartswift.com/how-to-make-a-simple-table-view-with-ios-8-and-swift/

您必須在ViewController重新加載數據將重新加載放入viewDidAppear()或諸如此類

這是一個錯誤,因為您只是init一個控制器,但是您的views尚未准備好,它們正在初始化。 viewDidLoad之后,您可以調用views ,但不能在之前調用。

所以這就是你的table nil的原因

除此之外,為什么即使您沒有看到table也需要重新加載table ,對嗎?

如果您希望viewcontroller成為rootviewcontroller,那么您只需在情節提要中單擊viewcontroller,然后在Utility-> Attributes inspector->選中“ is initial view controller”框即可。

https://www.dropbox.com/s/qfd9jqeos7ueq1w/Screen%20Shot%202015-06-25%20at%207.40.46%20PM.png?dl=0

暫無
暫無

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

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