第一个视图中包含的表格单元格已正确显示,但第二个视图中包含的表格单元格未显示。我不明白为什么。
HelpController.swift
import UIKit
class HelpController: UIViewController, UITableViewDelegate, UITableViewDataSource {
// MARK: - Initialize
@IBOutlet weak var menuTable: UITableView!
let helpMenu = ["a","b","c"]
override func viewDidLoad() {
super.viewDidLoad()
//datasource link
menuTable.delegate = self
menuTable.dataSource = self
self.menuTable?.tableFooterView = UIView()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
// MARK: - Table View Data Source
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return helpMenu.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell: UITableViewCell = UITableViewCell(style: UITableViewCellStyle.subtitle, reuseIdentifier: "HelpMenuCell")
cell.textLabel?.text = helpMenu[indexPath.row]
return cell
}
}
当我使用print (helpmenu.count)
进行检查时,它会返回3.它似乎在numberOfRowsInSection
之前运行良好,但cellForRowAt
不起作用。
这是我的第一个观点InfosController.swift
// MARK: - Table View Data Source
// get cell count
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if UserDefaults.standard.value(forKey: "userid") != nil {
// sign in state
return memberMenu.count
} else {
// sign out state
return nonMemberMenu.count
}
}
// change cell text
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell: UITableViewCell = UITableViewCell(style: UITableViewCellStyle.subtitle, reuseIdentifier: "InfosMenuCell")
if UserDefaults.standard.value(forKey: "userid") != nil {
// sign in state
cell.textLabel?.text = memberMenu[indexPath.row]
} else {
// sign out state
cell.textLabel?.text = nonMemberMenu[indexPath.row]
}
return cell
}
这是第一个视图中包含的正常工作的代码。这很好用,但我很困惑,因为它在第二个视图(HelpController
)中效果不佳。
PS。
答案 0 :(得分:0)
确保以下内容
Delegate & DataSource
添加到tableView。helpMenu count
是否不等于
的零即可。numberOfRowsInSection
返回零,则可能 cellForRowAt
indexPath不会调用。func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { }
答案 1 :(得分:0)
HelpController中的问题,在controlle self.menuTable?.tableFooterView = UIView() 因此,如果您有页脚视图,那么您需要编写委托函数heightForFooterInSection和viewForFooterInSection
func tableView(tableView:UITableView,viewForFooterInSection section:Int) - > UIView的? { }
func tableView(tableView:UITableView,heightForFooterInSection section:Int) - > CGFloat { }