不显示第二个视图中的表格单元格

时间:2017-06-30 06:02:41

标签: ios uitableview swift3

第一个视图中包含的表格单元格已正确显示,但第二个视图中包含的表格单元格未显示。我不明白为什么。

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。

identifier - HelpMenuCell

2 个答案:

答案 0 :(得分:0)

确保以下内容

  1. 确保您将Delegate & DataSource添加到tableView。
  2. 检查helpMenu count是否不等于 的即可。
  3. 如果numberOfRowsInSection返回零,则可能 cellForRowAt indexPath不会调用
  4. 一旦语法正确
  5. ,请检查方法声明
    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 {  }