1
我有一個IBOutlet連接的UIView
對象(innerView)坐在視圖控制器(UIViewController
)的視圖。我想讓用戶用他們的手指旋轉innerView。所以我有一個UIView
的子類(TouchView)設置爲innerView的類。當用戶旋轉視圖對象時,我希望視圖控制器從TouchView接收一個值。我擁有的是以下內容。發送數據到UIViewController從UIView子類與委託
// UIView
protocol TouchDelegate: class {
func degreeChanged(degree: Double)
}
class TouchView: UIView {
weak var delegate: TouchDelegate? = nil
override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
let aTouch: AnyObject = touches.first! as UITouch
let newLoc = aTouch.location(in: self.superview)
...
...
let degree = { (radians: Double) -> Double in
return radians * 180/M_PI
}
self.delegate?.degreeChanged(degree: degree)
}
}
// UIViewController
class ViewController: UIViewController, TouchDelegate {
@IBOutlet weak var innerView: UIView!
// MARK: - View
override func viewDidLoad() {
super.viewDidLoad()
let touchView = TouchView()
touchView.delegate = self
}
// MARK: - From TouchView
func degreeChanged(degree: Double) {
print(degree) // <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< no call
}
}
那麼,視圖控制器永遠不會從TouchView接收委託調用。我究竟做錯了什麼?感謝您的幫助。
好極了!謝謝。 –