基本上,我有一个矩形,我想在用户触摸矩形时打开照片库。
我尝试将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)
}
答案 0 :(得分:3)
您需要在控制器和UIView之间创建一个委托,方式与UITableViewDelegate相同。在视图中创建委托实例,并在实例化视图时从控制器设置myView.delegate = self
。您只需在控制器中实现协议即可。
您可以在Swift here找到关于委派的教程。
答案 1 :(得分:0)
您无法在视图中访问控制器。而是在控制器中添加点击手势到您的视图,因此您的控制器具有对ImagePipView实例的引用。