class AddTripExpense: UIViewController, UITableViewDelegate, UITableViewDataSource, UITextFieldDelegate,UINavigationControllerDelegate,UIImagePickerControllerDelegate {
// @IBOutlet weak var storePicker: UITableView!
var storePicker = UITableView()
override func viewDidLoad() {
super.viewDidLoad()
storePicker.delegate = self
storePicker.dataSource = self
storePicker = UITableView(frame: CGRect(x: storeNameTF.frame.origin.x + 3, y: storeNameTF.frame.origin.y + storeNameTF.frame.height + 3, width: storeNameTF.frame.width + 50, height: 150), style: UITableViewStyle.plain)
view.addSubview(storePicker)
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if (tableView == storePicker) {
return savedStoresArray.count
}
return 15
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = UITableViewCell(style: UITableViewCellStyle.default, reuseIdentifier: "cell")
if(tableView == storePicker) {
// let typeOfExpenseCell = tableView.dequeueReusableCell(withIdentifier: "typeOfExpenseCell", for: indexPath)
let storePickerCell = UITableViewCell(style: UITableViewCellStyle.default, reuseIdentifier: "storePickerCell")
storePickerCell.textLabel?.text = savedStoresArray[indexPath.row]
return storePickerCell
}
return cell
}
设置delegate
和datasource
的顺序应如下所示,
storePicker = UITableView(frame: CGRect(x: storeNameTF.frame.origin.x + 3, y: storeNameTF.frame.origin.y + storeNameTF.frame.height + 3, width: storeNameTF.frame.width + 50, height: 150), style: UITableViewStyle.plain)
storePicker.delegate = self
storePicker.dataSource = self
view.addSubview(storePicker)
当前,您正在将delegate
和dataSource
分配给使用此行重新分配storePicker
实例
storePicker = UITableView(frame: CGRect(x: storeNameTF.frame.origin.x + 3, y: storeNameTF.frame.origin.y + storeNameTF.frame.height + 3, width: storeNameTF.frame.width + 50, height: 150), style: UITableViewStyle.plain)
将storePicker
重新分配给新UITableView
实例会delegate
和datasource
设置为nil
,因此您需要按上述方式再次设置它们。
设置初始化
后的delegate
和dataSource
UITableView
storePicker = UITableView(frame: CGRect(x: storeNameTF.frame.origin.x + 3, y: storeNameTF.frame.origin.y + storeNameTF.frame.height + 3, width: storeNameTF.frame.width + 50, height: 150), style: UITableViewStyle.plain)
storePicker.delegate = self
storePicker.dataSource = self
view.addSubview(storePicker)
storePicker.reloadData()