我对 Swift 课程有疑问。我有一个用于 UITableViewController 类和 UITableViewCell 类的 swift 文件。我的问题是 UITableViewCell 类和网点。这个类有一个错误Class “HomeCell” has 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) } }
您必须使用隐式展开的可选项,以便 Swift 在初始化阶段可以处理循环依赖(在这种情况下是 UI 组件的父 <-> 子)。
@IBOutlet var imgBook: UIImageView! @IBOutlet var titleBook: UILabel! @IBOutlet var pageBook: UILabel!
阅读这个文档,他们很好地解释了这一切。