我在UIViewController中遇到初始化参数的问题.我上课了:
class ViewController: UIViewController {
@IBOutlet var cardButtons: Array<UIButton>
var flipCount = 0
var game: CardMatchingGame
var backCardImage: UIImage
var frontCardImage: UIImage
required init(coder aDecoder: NSCoder) {
self.backCardImage = UIImage(named: "back")
self.frontCardImage = UIImage(named: "front")
self.game = CardMatchingGame(count: cardButtons.count, deck: createDeck())
super.init(coder: aDecoder)
}
@IBAction func touchCardButton(sender: UIButton) {
var cardButtonsArray = cardButtons as NSArray
var chosenButtonIndex = cardButtonsArray.indexOfObject(sender)
game.chooseCardAtIndex(chosenButtonIndex)
}
func createDeck() -> Deck {
return PlayingCardDeck()
}
Run Code Online (Sandbox Code Playgroud)
}
但我有一个错误
count: cardButtons.count >> Variable 'self.cardButtons' used before being initialized/Property 'self.cardButtons' not initialized at super.init call
Run Code Online (Sandbox Code Playgroud)
和
deck: createDeck() >> 'self' used before super.init call
Run Code Online (Sandbox Code Playgroud)
如何修复此问题才能正确初始化UIViewController?
谢谢您的帮助.
您想要覆盖awakeFromNib并访问那里的插座,而不是在初始化程序中。
“nib 加载基础设施会向从 nib 存档重新创建的每个对象发送一条 awakeFromNib 消息,但前提是存档中的所有对象都已加载并初始化。当一个对象收到 awakeFromNib 消息时,它保证拥有其所有出口和已经建立的行动联系。”
所以我建议类似:
class ViewController: UIViewController {
@IBOutlet var cardButtons: Array<UIButton>!
var flipCount = 0
var game: CardMatchingGame!
var backCardImage: UIImage
var frontCardImage: UIImage
required init(coder aDecoder: NSCoder) {
self.backCardImage = UIImage(named: "back")
self.frontCardImage = UIImage(named: "front")
super.init(coder: aDecoder)
}
override func awakeFromNib() {
super.awakeFromNib()
self.game = CardMatchingGame(count: cardButtons.count, deck: createDeck())
}
@IBAction func touchCardButton(sender: UIButton) {
var cardButtonsArray = cardButtons as NSArray
var chosenButtonIndex = cardButtonsArray.indexOfObject(sender)
game.chooseCardAtIndex(chosenButtonIndex)
}
func createDeck() -> Deck {
return PlayingCardDeck()
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8995 次 |
| 最近记录: |