[英]UITableView delegate methods being called before viewDidLoad()
在UIViewController
的viewDidLoad()
有一個方法被調用來更新類變量。 一旦我導航到另一個視圖控制器並回到這個視圖控制器,就會首先調用UITableView
的委托方法,其中正在使用該類變量。 應用程序崩潰,因為該變量正在viewDidLoad()
構造。 如何解決這個問題? 謝謝。
有問題的類變量:
var showHideDict = Dictionary<Int, Bool>()
viewDidLoad()
:
override func viewWillAppear() {
super.viewWillAppear()
makeAPICall()
}
API調用方法:
func makeAPICall() {
// create helper object
let helper = ModelHelper()
helper.createModels(receivedDict: result! as NSDictionary)
// store the showHideDict
for index in 0...(Modelclass.models.count - 1) {
self.showHideDict[index] = true
}
DispatchQueue.main.async {
self.tableView.reloadData()
}
}
在您的UITableViewDelegate
方法中,我認為您需要檢查字典中的數據是否按預期填充。 例如,這是我經常在我的代碼中執行的操作:
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
{
return tableData?.count ?? 0
}
這就是說:如果tableData
不是nil,則返回數組中元素的數量。 否則返回0
然后在你的cellForRowAt
方法中,只是有條件地檢查showHideDict
的數據是否按預期填充,如果不是強制解包。 Swift通過選項強制執行安全......使用它而不是反對它。
完成API調用后,您需要做的就是執行tableView.reloadData()
並使用新填充的數據構建tableview。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.