基本上,我有一个矩形,并且我想要用户触摸矩形时打开照片库。如何在视图中调用位于viewController中的方法?
我尝试实例化视图控制器作为我的视图类中的对象,但不是很成功,因为我的openPhotoLibrary()
永远不会运行。
代码可能会有帮助。
编辑 我试过代表,但我还在挣扎。
视图类
protocol PhotoLibraryDelegate {
func openPhotoLibrary(sender: ImagePipView)
}
class ImagePipView: BasePipView{
var delegate: PhotoLibraryDelegate?
var addPhotoFrame = UIView(frame: CGRectMake(frame.width/2 - 30, 60, 60, 60))
addPhotoFrame.backgroundColor = UIColor.blueColor()
addPhotoFrame.addGestureRecognizer(UITapGestureRecognizer(target: self, action: "addPhotoTouched:"))
addSubview(addPhotoFrame)
func addPhotoTouched(recognizer: UITapGestureRecognizer){
println("PHOTO TOUCHED")
delegate?.openPhotoLibrary(self)
}
的ViewController类
class CameraViewControllerTest: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate, PhotoLibraryDelegate{
init() {
super.init(nibName:"MyNib", bundle:nil)
var productRequest: ImagePipView?
productRequest?.delegate = self
}
func openPhotoLibrary(){
println ("inside photo library")
var photoPicker = UIImagePickerController()
photoPicker.delegate = self
photoPicker.sourceType = .PhotoLibrary
self.presentViewController(photoPicker, animated: true, completion: nil)
}
谢谢!我刚刚添加了一个委托,但仍然遇到'致命错误:意外地发现零,同时解开可选值问题。你有什么想法,为什么? 当我调用'delegate.openPhotoLibrary()' – Aspen
时发生错误您确定在调用此指令之前分配了您的委托吗?试试'委托?.openPhotoLibrary()代替',这可以防止在委托为'nil'的情况下崩溃。 –
太棒了。 “?”帮助,因为现在我没有得到一个错误,但我注意到它没有正确调用函数..因为它甚至不会在函数println(“图片库”中)中打印第一行。你怎么看? – Aspen