我对Swift类有个问题。我有一个用于UITableViewController类和UITableViewCell类的快速文件。我的问题是UITableViewCell类和插座。这个类有一个错误"HomeCell“ no initializers,我不明白这个问题。
感谢您的回复。
import Foundation
import UIKit
class HomeTable: UITableViewController, UITableViewDataSource, UITableViewDelegate {
@IBOutlet var tableViex: UITableView!
var items: [(String, String, String)] = [
("Test", "123", "1.jpeg"),
("Test2", "236", "2.jpeg"),
("Test3", "678", "3.jpeg")
]
override func viewDidLoad() {
super.viewDidLoad()
var nib = UINib(nibName: "HomeCell", bundle: nil)
tableView.registerNib(nib, forCellReuseIdentifier: "bookCell")
}
// Number row
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return self.items.count
}
// Style Cell
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell:UITableViewCell = self.tableView.dequeueReusableCellWithIdentifier("bookCell") as UITableViewCell
// Style here
return cell
}
// Select row
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
// Select
}
}
// PROBLEM HERE
class HomeCell : UITableViewCell {
@IBOutlet var imgBook: UIImageView
@IBOutlet var titleBook: UILabel
@IBOutlet var pageBook: UILabel
func loadItem(#title: String, page: String, image:String) {
titleBook.text = title
pageBook.text = page
imgBook.image = UIImage(named: image)
}
}
发布于 2015-01-06 19:31:41
您必须使用隐式展开选项,以便Swift能够在初始化阶段处理循环依赖(在本例中为UI组件的父项<->子项)。
@IBOutlet var imgBook: UIImageView!
@IBOutlet var titleBook: UILabel!
@IBOutlet var pageBook: UILabel!
阅读这篇doc,他们很好地解释了这一切。
发布于 2015-01-26 19:40:37
快速修复-确保所有在创建时没有初始化的变量(例如var num : Int?
和var num = 5
)都有一个?
或!
。
很长的答案(推荐)-按照mprivat的建议阅读doc ...
发布于 2015-06-19 16:44:27
这是来自苹果doc的
类和结构必须在创建该类或结构的实例时将其所有存储的属性设置为适当的初始值。存储的属性不能处于不确定状态。
您会收到错误消息“类”HomeCell没有初始化程序,因为您的变量处于不确定状态。要么创建初始化器,要么将它们设置为可选类型,使用!或者?
https://stackoverflow.com/questions/27797351
复制相似问题