[英]Swift Delegate Not Being Called
我有一個具有委托的視圖,我想在按下按鈕時在GameController中調用numpadView(numpadView :),但是我無法使其正常工作。 touchesBegan()的重載工作正常,這實際上是與pressDelegate?.numpadView(self)相同的那一行,它不會在GameController類中調用委托函數。 我為使它正常工作缺少什么而感到困惑?
為了簡單起見,我清理了代碼,只保留了與問題相關的基本內容。
NumpadView.swift
protocol NumpadPressDelegateProtocol {
func numpadView(numpadView: NumpadView)
}
class NumpadView: UIButton{
var pressDelegate: NumpadPressDelegateProtocol?
init(char: Character) {
let frame = CGRectMake(160, 100, 50, 50)
super.init(frame:frame)
self.setTitle("\(char)", forState: UIControlState.Normal)
self.userInteractionEnabled = true
}
override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
pressDelegate?.numpadView(self)
}
}
GameController.swift
class GameController: NumpadPressDelegateProtocol {
func numpadView(numpadView: NumpadView) {
//do something
}
}
GameController
將NumpadPressDelegateProtocol
聲明為NumpadPressDelegateProtocol
不足以使您獲得回調。 您還需要在pressDelegate
中設置NumpadView
實例的Gamecontroller
。 假設numpadView
是實例變量(無論是否為IBOutlet),您都必須將委托設置為
在GameController內部初始化
numpadView.pressDelegate = self
您是否將pressDelegate
屬性設置為某些值? 您顯示的代碼中未分配任何內容。 您是否在代碼的其他位置為其分配了某些內容?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.