为啥我的表格视图单元格不能显示?

Posted

技术标签:

【中文标题】为啥我的表格视图单元格不能显示?【英文标题】:Why can't my Table View Cell be shown?为什么我的表格视图单元格不能显示? 【发布时间】:2016-04-01 13:49:42 【问题描述】:

我在学习storyboards教程,主要是关于Tab Bar Controller、Navigation Controller和Table View Controller的使用。表视图控制器嵌入在导航控制器中。

但是,当我运行这个应用程序时,看不到表格视图单元格。我仔细检查了我的代码,但仍然找不到原因。这里有两个故事板法师。 Document Outline,click here. View Controller Scene, here.

ViewController.swift 中的代码在这里。

import UIKit
import Foundation

struct Player

    var name:String?
    var game:String?
    var rating:Int

    init(name:String?, game:String?,rating:Int)
    
        self.name = name
        self.game = game
        self.rating = rating
    


let playersData = [
Player(name: "Bill Evans", game: "TTT", rating: 4),
Player(name: "OD", game: "Spin the Bottle", rating: 5),
Player(name: "DB", game: "Texas Holder", rating: 2)]



class PlayersViewController: UITableViewController 

var players:[Player] = playersData


override func viewDidLoad() 
    super.viewDidLoad()



override func didReceiveMemoryWarning() 
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.


// MARK: - Table view data source

override func numberOfSectionsInTableView(tableView: UITableView) -> Int 

    return 1


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

    return players.count


override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell

    //This method will check to see if there is an existing cell that can be recycled.If not, it will automatically allocate a prototype cell and return it to you.
    let cell = tableView.dequeueReusableCellWithIdentifier("PlayerCell", forIndexPath: indexPath)


    let player = players[indexPath.row]as Player
    cell.textLabel?.text = player.name
    cell.detailTextLabel?.text = player.game
    return cell

   

【问题讨论】:

您是否正确设置了tableview数据源和委托?选择您的视图控制器,并将表的委托和数据源设置为您的视图控制器并重新运行:) 嗯,我已经检查了 tableview 数据源和委托。问题出在身份检查器中。自定义类应该是“PlayersViewController”,而不是“UITableViewController”。无论如何,谢谢 【参考方案1】:

在您的屏幕截图(“文档大纲”)中,有PlayersViewController 场景。 但这应该是Players View Controller(带空格)。

这意味着您将PlayersViewController 设置为ViewController 的title。 您应该将此场景设置为custom class (ViewController)。

因此,您的场景由 UITableViewController 处理,目前没有数据可呈现。

要解决此问题,请选择您的视图控制器或场景,转到 Identity Inspector 并在 Class 属性中设置 PlayersViewController

【讨论】:

谢谢,问题出在身份检查器上。我忘了把它改成 PlayersViewController。【参考方案2】:
//register your cell(nib) in viewdidload
let customCellNib: UINib = UINib(nibName:@"nibName", bundle: nil)
yourTableView.registerNib(customCellNib, forCellReuseIdentifier:@"PlayerCell")

【讨论】:

以上是关于为啥我的表格视图单元格不能显示?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的自定义表格单元格中的标签在单击行之前无法显示

为啥导航返回后表格视图单元格背景视图工作良好?

为啥我的单元格在我的 UITableView 中显示为空白?

为啥两个表格视图单元格中的两个集合视图在 Swift 4 中不起作用?

表格视图中的自定义单元格未显示?

如何在右侧的表格视图单元格中显示徽章计数