【发布时间】:2020-10-27 06:23:10
【问题描述】:
我在静态单元格中嵌入了一个动态 UITableView。
我还根据这个问题的答案创建了一个新的数据源:Swift: TableView within Static UITableViewCell
我的问题是动态 UITableViewcell 的数据没有加载数据并保持显示占位符名称。你能帮我理解为什么吗?
主视图控制器
class CreateCompanyTableViewController: UITableViewController {
@IBOutlet weak var lblNumberOfUser: UILabel!
var newStakeholders: [ReadOrganizationStakeholder] = []
private lazy var dataSource = NewUserDataSource(newStakeholders: self.newStakeholders)
@IBOutlet weak var companyUsersTableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
lblNumberOfUser.text = "\(newStakeholders.count) Users"
companyUsersTableView.dataSource = dataSource
companyUsersTableView.delegate = dataSource
companyUsersTableView.reloadData()
}
override func viewDidAppear(_ animated: Bool) {
lblNumberOfUser.text = "\(newStakeholders.count) Users"
companyUsersTableView.reloadData()
}
@IBAction func addNewUser(_ sender: Any) {
performSegue(withIdentifier: "segueAddNewUsers", sender: sender)
}
@IBAction func unwindFromSelectSubUsertoAddUserCompany(_ sender: UIStoryboardSegue){
if let senderVC = sender.source as? NewUserForCompanyTableViewController{
print(senderVC.newStakeholder!)
var newuser = senderVC.newStakeholder!
dataSource.newStakeholders.append(newuser)
companyUsersTableView.reloadData()
}
}
}
class NewUserDataSource: NSObject, UITableViewDataSource ,UITableViewDelegate{
// We keep this public and mutable, to enable our data
// source to be updated as new data comes in.
var newStakeholders: [ReadOrganizationStakeholder]
init(newStakeholders: [ReadOrganizationStakeholder]) {
self.newStakeholders = newStakeholders
}
func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
func tableView(_ tableView: UITableView,
numberOfRowsInSection section: Int) -> Int {
return newStakeholders.count
}
func tableView(_ tableView: UITableView,
cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let stakeholders = newStakeholders[indexPath.row]
let cell = tableView.dequeueReusableCell(
withIdentifier: "newUserTableViewCell",
for: indexPath
) as! NewUserTableViewCell
cell.setlblUsername(stakeholders.fullName)
cell.setlblEmail(stakeholders.emailAddress!)
return cell
}
}
【问题讨论】:
-
请检查委托方法是否被调用?
-
请在您的视图控制器中设置委托表视图
-
我已经设置了委托tableview
标签: ios swift uitableview datasource