为啥我的表格视图单元格不能显示?
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 中显示为空白?