मेरे पास एक प्रतिनिधि के साथ एक दृश्य है कि मैं बटन प्रेस पर गेम नियंत्रक में कॉल numpadView (numpadView :) रखना चाहता हूं, हालांकि मैं इसे काम नहीं कर सकता। स्पर्शों का अधिभार बेगन() ठीक काम करता है, यह वास्तव में प्रेसडिलेट के साथ लाइन है? एनम्पैड व्यू (स्वयं) जो गेमकंट्रोलर क्लास में प्रतिनिधि समारोह को कॉल नहीं करता है। मैं काम करने के लिए क्या खो रहा है के रूप में फंस गया हूँ?स्विफ्ट प्रतिनिधि को कॉल नहीं किया जा रहा
मैंने कोड को केवल सादगी के लिए समस्या से संबंधित आवश्यक छोड़ने के लिए साफ़ किया।
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
}
}
नहीं init, मुझे नहीं पता। मुझे इसे क्या सौंपा जाना चाहिए और कहां? –
आपको 'GameController' ऑब्जेक्ट बनाने की आवश्यकता है और इसे अपने 'प्रेसडिलेगेट' संपत्ति को असाइन करें। चूंकि 'GameController' को आपके' NumpadPressDelegateProtocol' प्रोटोकॉल के अनुरूप घोषित किया गया है। फिर, जब आपका 'स्पर्श करता है' फ़ंक्शन निष्पादित होता है, तो 'numpadView()' को कॉल करने के लिए 'प्रेसडिलेगेट' ऑब्जेक्ट होगा। –