[英]Delegate declared in UIView subclass won't work in UIViewController?
我正在嘗試創建一個可重用的UIView,我可以放在多個UIViewControllers中。 我給它委托方法,我希望父UIViewControllers訪問,但它會拋出一個錯誤(在下面的代碼中評論)。 我能解決這個問題的更好方法是什么?
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var cameraView: CameraView!
override func viewDidLoad() {
super.viewDidLoad()
self.cameraView.delegate = self
//ERROR: Cannot assign a value of type 'viewController' to a value of type 'CameraViewDelegate?'
}
}
protocol CameraViewDelegate {
func cameraViewShutterButtonTapped()
func cameraViewimagePickerTapped(imageData: NSData)
}
class CameraView: UIView {
var delegate:CameraViewDelegate?
//Ect...
}
您尚未指定ViewController
符合CameraViewDelegate
協議。 你應該修改你的代碼:
class ViewController: UIViewController, CameraViewDelegate {
...此時Xcode會抱怨你沒有實現cameraViewShutterButtonTapped()
和cameraViewimagePickerTapped()
,這至少告訴你你是在正確的軌道上!
旁注:你真的希望攝像機視圖能夠強烈引用其代理嗎? 你可能希望它變weak
。
您需要讓ViewController類實現CameraViewDelegate協議,如下所示:
class ViewController : UIViewController, CameraViewDelegate { ... }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.