当我运行应用程序时,仅调用numberOfRowsInSection()
方法。因此,我在每个方法中都放置了一定数量的断点,但是我发现numberOfRowsInSection()
被调用了4-5次,而其余的方法没有被调用。这是我的代码。
import UIKit
var arrSearch = [[String:Any]]()
class RecentSearchViewController: CustomNavigationViewController {
@IBOutlet var tblSearch: UITableView!
var searchBusVC:SearchBusViewController?
override func viewDidLoad() {
super.viewDidLoad()
if let arr = UserDefault["SearchTo"]{
arrSearch.append(arr as! [String:Any])
}
tblSearch.reloadData()
}
extension RecentSearchViewController: UITableViewDataSource , UITableViewDelegate {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return arrSearch.count
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return 200
}
func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat {
return 100
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "RecentCell") as! RecentCell
cell.selectionStyle = .none
let dict = arrSearch[indexPath.row]
cell.lblFrom.text = (dict["From"] as! String)
cell.lblTo.text = (dict["To"] as! String)
let strDate = Utill.getStringFromDate("EEE MMM dd ,yyyy", date: (dict["fromdate"] as! Date))
cell.lblDate.text = strDate
return cell
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
if let searchvc = self.searchBusVC {
searchvc.setRecentSearch(dict: arrSearch[indexPath.row])
}
self.navigationController?.popViewController(animated: true)
}
}
class RecentCell: UITableViewCell {
@IBOutlet var lblFrom: UILabel!
@IBOutlet var lblTo: UILabel!
@IBOutlet var lblDate: UILabel!
}
我尝试了很多次,但是对我来说不起作用。即使在控制台中,也不会显示任何错误。代码有问题吗?
答案 0 :(得分:0)
如果调用numberOfRowsInSection
,但没有其他UITableViewDataSource
方法,则必须意味着numberOfRowsInSection
返回0。并且必须意味着arrSearch
为空。另外,这部分代码
if let arr = UserDefault["SearchTo"] {
arrSearch.append(arr as! [String:Any])
}
应该被重写。由于您要转换下标的结果,因此可以将其作为if let
的一部分来执行,如果结果不是[String:Any]
类型的
if let arr = UserDefault["SearchTo"] as? [String:Any] {
arrSearch.append(arr)
}
简而言之,显然UserDefault["SearchTo"]
返回nil