Kev*_* Py 177 uitableview ios swift
我有Swift类的问题.我有一个UITableViewController类和UITableViewCell类的swift文件.我的问题是UITableViewCell类和出口.这个类有一个错误类"HomeCell"没有初始化器,我不明白这个问题.
谢谢你的回复.
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)
}
}
Run Code Online (Sandbox Code Playgroud)
mpr*_*vat 254
您必须使用隐式解包的选项,以便Swift可以在初始化阶段处理循环依赖(在这种情况下,UI组件的父< - >子).
@IBOutlet var imgBook: UIImageView!
@IBOutlet var titleBook: UILabel!
@IBOutlet var pageBook: UILabel!
Run Code Online (Sandbox Code Playgroud)
阅读本文档,他们很好地解释了这一点.
Hon*_*ney 29
我的答案解决了一般的错误,而不是OP的确切代码.没有回答提到这个说明所以我只是想添加它.
下面的代码也会生成相同的错误:
class Actor {
let agent : String? // BAD! // Its value is set to nil, and will always be nil and that's stupid so Xcode is saying not-accepted.
// Technically speaking you have a way around it, you can help the compiler and enforce your value as a constant. See Option3
}
Run Code Online (Sandbox Code Playgroud)
其他人提到你要么创建初始化器,要么使用它们制作可选类型!要么 ?哪个是对的.但是,如果你有一个可选的成员/属性,那个可选的应该是可变的,即var.如果你做了一个let那么它就永远无法摆脱它的nil状态.那很糟!
所以正确的写作方式是:
class Actor {
var agent : String? // It's defaulted to `nil`, but also has a chance so it later can be set to something different || GOOD!
}
Run Code Online (Sandbox Code Playgroud)
或者你可以把它写成:
class Actor {
let agent : String? // It's value isn't set to nil, but has an initializer || GOOD!
init (agent: String?){
self.agent = agent // it has a chance so its value can be set!
}
}
Run Code Online (Sandbox Code Playgroud)
或默认为任何值(包括nil哪种有点愚蠢)
class Actor {
let agent : String? = nil // very useless, but doable.
let company: String? = "Universal"
}
Run Code Online (Sandbox Code Playgroud)
我的答案解决了一般的错误,而不是OP的确切代码.没有回答提到这个说明所以我只是想添加它.
下面的代码也会生成相同的错误:
class Actor {
let agent : String? // BAD! // Its value is set to nil, and will always be nil and that's stupid so Xcode is saying not-accepted.
// Technically speaking you have a way around it, you can help the compiler and enforce your value as a constant. See Option3
}
Run Code Online (Sandbox Code Playgroud)
其他人提到你要么创建初始化器,要么使用它们制作可选类型!要么 ?哪个是对的.但是,如果你有一个可选的成员/属性,那个可选的应该是可变的,即let.如果你做了一个var那么它就永远无法摆脱它的nil状态.那很糟!
所以正确的写作方式是:
class Actor {
var agent : String? // It's defaulted to `nil`, but also has a chance so it later can be set to something different || GOOD!
}
Run Code Online (Sandbox Code Playgroud)
或者你可以把它写成:
class Actor {
let agent : String? // It's value isn't set to nil, but has an initializer || GOOD!
init (agent: String?){
self.agent = agent // it has a chance so its value can be set!
}
}
Run Code Online (Sandbox Code Playgroud)
或默认为任何值(包括var哪种有点愚蠢)
class Actor {
let agent : String? = nil // very useless, but doable.
let company: String? = "Universal"
}
Run Code Online (Sandbox Code Playgroud)
如果你很好奇为什么let(相反nil)没有初始化,nil那么请在这里和这里阅读
Anu*_*rma 10
在我的情况下,我宣布了Bool这样的:
var isActivityOpen: Bool
Run Code Online (Sandbox Code Playgroud)
即我声明它没有展开,所以,这就是我解决(无初始化)错误的方法:
var isActivityOpen: Bool!
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
130452 次 |
| 最近记录: |