Ios UIImageController 委托(delegate)未声明的错误

标签 ios objective-c camera delegates uiimagepickercontroller

我知道这个问题被问过好几次了。 但我按照这两种方法来解决未声明的标识符自身。

我在 .m 类中声明了@interface

enter image description here

最佳答案

我相信您遇到这些错误是因为您是在 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* 是一个没有关联数据类型的指针。它可以保存任何类型的地址,并且可以类型转换为任何类型。

关于Ios UIImageController 委托(delegate)未声明的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42172454/

相关文章:

ios - iPhone 核心位置架构 - 如何跨多个 Controller 使用它

objective-c - 为什么 NSNumber 文字不能用于静态声明

安卓保存图片到sd卡报错

Android:前置摄像头的手势识别

python - 自动从 python 中的图像中删除热/死像素

iphone - 许多 NSDictionary 的 NSArray。为给定键找到具有必要值的 NSDictionary 的最佳方法是什么?

objective-c - UILabel 文本内的图像

ios - 单元格标签无法捕获表格 View 中的值

ios - 从文档目录获取图像到 Collection View

ios - 按钮和继续