UITableView没有显示任何内容

时间:2017-02-27 13:05:31

标签: ios uitableview swift3

我写了一个应用程序,它在UIViewController中有一个UITableView,这是我的代码:

class CategorySelectViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {

var melliSubCategories = [String]()
var mazhabiSubCategories = [String]()
var sayerSubCategories = [String]()


@IBOutlet weak var melliButton: UIButton!
@IBOutlet weak var sayerButton: UIButton!
@IBOutlet weak var mazhabiButton: UIButton!


@IBAction func melliButtonClicked(_ sender: UIButton) {
    categorySelected = 6
    melliButton.isHighlighted = true
    mazhabiButton.isHighlighted = false
    sayerButton.isHighlighted = false
    categoryTableView.reloadData()
}

@IBAction func sayerButtonClicked(_ sender: UIButton) {
    categorySelected = 5
    melliButton.isHighlighted = false
    mazhabiButton.isHighlighted = false
    sayerButton.isHighlighted = true
    categoryTableView.reloadData()
}

@IBAction func mazhabiButtonClicked(_ sender: UIButton) {
    categorySelected = 4
    melliButton.isHighlighted = false
    mazhabiButton.isHighlighted = true
    sayerButton.isHighlighted = false
    categoryTableView.reloadData()
}

override func viewDidLoad() {
    super.viewDidLoad()


    // Do any additional setup after loading the view.
    categoryTableView.dataSource = self
    categoryTableView.delegate = self
    categoryTableView.register(CategorySelectTableViewCell.self, forCellReuseIdentifier: "Cell")
    melliSubCategories = DataBaseManager.shared.subCategories(6)
    mazhabiSubCategories = DataBaseManager.shared.subCategories(4)
    sayerSubCategories = DataBaseManager.shared.subCategories(5)
    print(melliSubCategories)
    print("/////////////////")
    print(mazhabiSubCategories)
    print("/////////////////")
    print(sayerSubCategories)
    print("/////////////////")
}

@IBOutlet weak var categoryTableView: UITableView!


func numberOfSections(in tableView: UITableView) -> Int {
    return 1
}

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    switch categorySelected {
    case 4: //mazhabi
        return mazhabiSubCategories.count
    case 5: //sayer
        return sayerSubCategories.count
    case 6: //melli
        return melliSubCategories.count
    default:
        return melliSubCategories.count
    }
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath as IndexPath) as! CategorySelectTableViewCell
    cell.label?.text = melliSubCategories[indexPath.row]

    return cell

}

我为表视图中的单元格创建了一个名为CategorySelectTableViewCell的类,它们具有图像和标签。

在代码中我按数据库填充数组,我想在表视图中显示它们,但tableview没有显示任何内容。

屏幕截图:my storyboarddemo

2 个答案:

答案 0 :(得分:1)

你在说:

cell.label?.text = melliSubCategories[indexPath.row]

这是不可能的。要使其工作,您的自定义单元格类型CategorySelectTableViewCell需要位于带有label插座的笔尖中。但是那个nib要么在故事板中,要么在xib文件中。但你也说

categoryTableView.register(CategorySelectTableViewCell.self, ...

该行阻止单元格来自xib或故事板。因此插座无法工作,电池将保持空置。

答案 1 :(得分:-2)

请在numberOfRowsInSection方法中检查数组计数是否为零。

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int

此外,交叉检查小区标识符是否正确。

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
{
    let cell : CategorySelectTableViewCell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath as IndexPath) as! CategorySelectTableViewCell
    cell.label?.text = melliSubCategories[indexPath.row]       
    return cell
}

在ViewDidLoad方法中重新加载tableview:

  

categoryTableView.reloadData()

override func viewDidLoad() 
{
    super.viewDidLoad()
    // Do any additional setup after loading the view.
    categoryTableView.dataSource = self
    categoryTableView.delegate = self
    categoryTableView.register(CategorySelectTableViewCell.self, forCellReuseIdentifier: "Cell")
    melliSubCategories = DataBaseManager.shared.subCategories(6)
    mazhabiSubCategories = DataBaseManager.shared.subCategories(4)
    sayerSubCategories = DataBaseManager.shared.subCategories(5)
    print(melliSubCategories)
    print("/////////////////")
    print(mazhabiSubCategories)
    print("/////////////////")
    print(sayerSubCategories)
    print("/////////////////")
    categoryTableView.reloadData()
}