use*_*888 36 uiimagepickercontroller swift xcode6 ios8
我正在尝试UIImagePickerController快速使用但不工作......
我的ViewController:
class ViewController: UIViewController {
@IBOutlet var imag : UIView = nil
@IBAction func capture(sender : UIButton) {
    println("Button capture")
    if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.Camera)
    {
        var imag = UIImagePickerController()
        imag.delegate = self
        imag.sourceType = UIImagePickerControllerSourceType.Camera;
       imag.mediaTypes = kUTTypeImage
        imag.allowsEditing = false
        self.presentViewController(imag, animated: true, completion: nil)
    }
   }   
}
我在下面的代码行中有错误
imag.delegate = self 
(Type'ViewControlles does confoorm to protocol 'UIImagePickerControllerDelegate')
imagePicker.mediaTypes = kUTTypeImage   
(use of unresolved identifier kUTTypeImage)
我已经阅读过kUTTypeImage在swift 中无法使用的内容.但是我不知道,我正在使用这个函数.有帮助吗?
谢谢!!
小智 84
您还应该在控制器中导入MobileCoreServices:
import MobileCoreServices 
然后将类型放在方括号内,如下所示:
image.mediaTypes = [kUTTypeImage]
Swift 2.0及更高版本
image.mediaTypes = [kUTTypeImage as String]
Aar*_*ger 43
在Swift 2.0(Xcode 7)中,您需要显式地将kUTTypeImage(a CFString)转换为String:
picker.mediaTypes = [kUTTypeImage as String]
您仍然需要导入移动核心服务才能定义此符号:
import MobileCoreServices 
的这就是说,默认值mediaTypes是[kUTTypeImage],所以你不需要设置它,如果这就是你想要的.
Rom*_*man 24
你也应该添加UINavigationControllerDelegate到协议列表中的ViewController
一个和一个可选的委托函数(如果你计划得到一张图片)
这是您的问题的工作代码:
import UIKit
import MobileCoreServices
class ViewController: UIViewController, UINavigationControllerDelegate, UIImagePickerControllerDelegate {
    func imagePickerController(picker: UIImagePickerController!, didFinishPickingImage image: UIImage!, editingInfo: NSDictionary!){
        println("i've got an image");
    }
    @IBAction func capture(sender : UIButton) {
        if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.Camera){
            println("Button capture")
            var imag = UIImagePickerController()
            imag.delegate = self
            imag.sourceType = UIImagePickerControllerSourceType.Camera;
            imag.mediaTypes = [kUTTypeImage]
            imag.allowsEditing = false
            self.presentViewController(imag, animated: true, completion: nil)
        }
    }
}
从你的代码中可以看出,你在两个地方犯错是设置错误,delegate第二个是设置媒体类型imag.mediaTypes = kUTTypeImage
第一个:如果你查看它的delegate定义UIImagePickerController需要确认两个协议UINavigationControllerDelegate,UIImagePickerControllerDelegate所以你必须在你的viewcontroller类中采用这两个协议,如
class ViewController: UIViewController,UINavigationControllerDelegate,    UIImagePickerControllerDelegate
第二个错误:如果你查看mediaTypes它的定义部分,显然需要传递一系列媒体类型,所以这样做            
imag.mediaTypes = [kUTTypeImage]
除此之外,我还为同一项任务编写了一个非常下降的课程
它易于理解和集成.
//Declare property 
var imagePicker:ImageVideoPicker?
//Call below line of code properly, it will return an image
self.imagePicker = ImageVideoPicker(frame: self.view.frame, superVC: self) { (capturedImage) -> Void in
        if let captureImage = capturedImage{
        //you did it.....
        }
    }
你必须像这样遵守代表
 class ViewController: UIViewController, UIImagePickerControllerDelegate
根据文档,默认情况下,媒体类型设置为图像,因此您可以继续删除该行,因为您仅将其设置为图像。
不要忘记实现文档中概述的协议方法: 文档
| 归档时间: | 
 | 
| 查看次数: | 43638 次 | 
| 最近记录: |