动态 UItableviewcell 仍然显示占位符文本
dynamic UItableviewcell still show placeholder text
我在静态单元格中嵌入了动态 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
}
}
您的数据似乎为空:
var newStakeholders: [ReadOrganizationStakeholder] = []
您对此发表了评论:
// let dataSource = NewUserDataSource(newStakeholders: self.newStakeholders)
所以是空的,这个 returns 0
func tableView(_ tableView: UITableView,
numberOfRowsInSection section: Int) -> Int {
return newStakeholders.count
}
请在此处设置断点并调试
我在静态单元格中嵌入了动态 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
}
}
您的数据似乎为空:
var newStakeholders: [ReadOrganizationStakeholder] = []
您对此发表了评论:
// let dataSource = NewUserDataSource(newStakeholders: self.newStakeholders)
所以是空的,这个 returns 0
func tableView(_ tableView: UITableView,
numberOfRowsInSection section: Int) -> Int {
return newStakeholders.count
}
请在此处设置断点并调试