Ios UIImageController委托未声明的错误

时间:2017-02-11 05:07:40

标签: ios objective-c camera delegates uiimagepickercontroller

我知道这个问题有好几次。 但我按照两种方法解决了未申报的标识符自我。

我在.m类

中声明了@interface

enter image description here

1 个答案:

答案 0 :(得分:1)

我相信您正面临着这些错误,因为您是在C ++ / C方法中编写的。如果你在objective-c方法中编写它,你的问题应该得到解决。

- (void)cameraCapture {
    UIImagePickerController *picker = [UIImagePickerController new];
    picker.delegate = self;
}

您可以通过以下方式在C / C ++方法中编写它。

void cameraCapture(void* object) {

    YourCurrentViewController *vc = (__bridge YourCurrentViewController *)object;

    UIImagePickerController *picker = [UIImagePickerController new];
    picker.delegate = vc;
}

以下列方式从Objective-C方法调用它。

CameraCapture(1, "imgName", (__bridge void *)self);

从C / C ++方法调用Objective-C方法。

void CameraCapture(long cCameraClient, const char *imgName, void* object) {

    SATController *vc = (__bridge SATController *)object;
    UIImagePickerController *picker = [UIImagePickerController new];
    picker.delegate = self;
    picker.sourceType = UIImagePickerControllerSourceTypeCamera;
    picker.allowsEditing = YES;

    [self presentModalViewController:picker animated:YES];
}

此外,您无法从C ++方法直接访问self。你需要将它传递给函数。这就是输入void *object的原因。 void*是一个没有关联数据类型的指针。它可以保存任何类型的地址,并且可以对任何类型进行类型转换。