我正在尝试使用swift中的TLPhotoControllerDelegate创建自定义委托。但是,不通过回调调用doSomething方法。代表呢? TLPhotoControllerDelegate()不会触发类B TLPhotoControllerDelegate方法。提前谢谢!
Class A:
protocol TLPhotoControllerDelegate {
func addimageCollectionView(image:UIImage)
}
class TLPhotoController: TLBaseViewController {
// Mark: Properties
var delegate:TLPhotoControllerDelegate?
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func capturePhoto(sender: TLButton) {
delegate.addimageCollectionView(image)
}
}
Class B:
class TLPatientAlbumCollectionViewController:TLPhotoControllerDelegate {
var photoController:TLPhotoController?
override func viewDidLoad() {
photoController?.delegate = self
super.viewDidLoad()
loadData()
}
func addimageCollectionView(image: UIImage) {
}
}
答案 0 :(得分:0)
根据评论中的代码,您似乎没有在任何地方实例化TLPhotoController
?
您的代码可能如下所示:
func viewDidLoad() {
super.viewDidLoad()
photoController = TLPhotoController() // Or however you want to initialise
photoController?.delegate = self
}
当你考虑调用代码时,我还建议放入几个断点来查看变量的状态,看看发生了什么。
修改强>
在澄清聊天中的问题之后,问题是代理没有被设置。建议的解决方案是在推送视图控制器的prepareForSegue:
期间设置它。
答案 1 :(得分:0)
您似乎没有初始化TLPatientAlbumCollectionViewController类的photoController属性。您应该在viewDidLoad方法中初始化它。