自定义表格单元格不显示任何内容 - Swift 2
Posted
技术标签:
【中文标题】自定义表格单元格不显示任何内容 - Swift 2【英文标题】:Custom Table Cell doesn't show any content- Swift 2 【发布时间】:2015-11-08 08:34:46 【问题描述】:我正在尝试在我的应用程序的注释上按下按钮时显示自定义表格视图单元格。当我按下按钮时,会出现一个空单元格,我不知道它有什么问题。你有什么建议? 提前致谢
类 ViewController: UIViewController, MKMapViewDelegate, CLLocationManagerDelegate, UIPopoverPresentationControllerDelegate,UITableViewDataSource, UITableViewDelegate
struct MyData
var imagy:UIImage
var title:String
var details:String
var tableData: [MyData] = []
@IBOutlet weak var mapView: MKMapView!
let locationManager = CLLocationManager()
var mapItemData:MKMapItem!
let textCellIdentifier = "TextCell"
//TableViewDataSource functions
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
return tableData.count
func numberOfSectionsInTableView(tableView: UITableView) -> Int return 1
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
// Create a new cell with the reuse identifier of our prototype cell
// as our custom table cell class
let cell = tableView.dequeueReusableCellWithIdentifier("TableViewCell") as! TableViewController
// Set the first row text label to the firstRowLabel data in our current array item
cell.imagy.image = tableData[indexPath.row].imagy
// Set the second row text label to the secondRowLabel data in our current array item
cell.title.text = tableData[indexPath.row].title
// Set the second row text label to the secondRowLabel data in our current array item
cell.details.text = tableData[indexPath.row].details
// Return our new cell for display
tableView.delegate = self
tableView.dataSource = self
return cell
override func prepareForSegue(segue: UIStoryboardSegue,
sender: AnyObject?)
// Set any data to be shown on the table view here
var picture:[UIImage] = [
UIImage(named: "pic1.jpg")!,
//UIImage(named: "pic2.jpg")!,
//UIImage(named: "pic3.jpg")!,
//UIImage(named: "pic4.jpg")!,
// UIImage(named: "pic5.jpg")!,
// UIImage(named: "pic6.jpg")!,
//UIImage(named: "pic7.jpg")!,
UIImage(named: "pic8.jpg")!, ]
override func viewDidLoad()
super.viewDidLoad()
这是 TableView 类:
类 TableViewController: UITableViewCell
@IBOutlet weak var imagy: UIImageView!
@IBOutlet weak var title: UILabel!
@IBOutlet weak var details: UILabel!
@IBOutlet weak var exit: UIButton!
override func awakeFromNib()
super.awakeFromNib()
// Initialization code
override func setSelected(selected: Bool, animated: Bool)
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
【问题讨论】:
【参考方案1】:cellForRowAtIndexPath
仅在您的 tableView.dataSource
已设置时调用。你这样说:
tableView.delegate = self
tableView.dataSource = self
在cellForRowAtIndexPath
,所以当然你的桌子上什么都没有。就像你把钥匙放在房子里然后关上门一样。请将它们放在viewDidLoad
中。
【讨论】:
感谢您的回复。问题是,当我将它们放入 viewdidload 时,我收到一个错误“Ambiguous use of tableview numberofrowsinsection” 您是否为表格视图创建了正确的IBOutlet
?
就像您创建时一样:@IBOutlet weak var imagy: UIImageView!
。你有没有这样的:@IBOutlet weak var tableView: UITableView!
?
我意识到您所说的 IBOutlet 是什么意思,并且我知道如何为图像和标题创建插座,但我没有用于 tableView 的插座。我现在刚刚创建了一个,它可以编译,但是我在 tableview.datasource = self 上得到了一个错误的执行
嗯,我认为仅写“@IBOutlet ....”是不够的,您必须以某种方式手动链接它,这可能是导致执行不良的原因以上是关于自定义表格单元格不显示任何内容 - Swift 2的主要内容,如果未能解决你的问题,请参考以下文章
自定义表格单元格不符合 NilLiteralConvertible Swift Xcode 6 Beta 5