From 9d590a85c268857fde79b9abeb38e700ea33951b Mon Sep 17 00:00:00 2001 From: YellowCat98 Date: Sat, 11 May 2024 15:43:22 +0100 Subject: [PATCH] asdasdasdasd --- src/mainobj.mm | 54 ++++++++++++++++++++++++++++++-------------------- 1 file changed, 32 insertions(+), 22 deletions(-) diff --git a/src/mainobj.mm b/src/mainobj.mm index f161f90..8fd8072 100644 --- a/src/mainobj.mm +++ b/src/mainobj.mm @@ -25,32 +25,42 @@ void showAlert(const char *title, const char *message) { +// Custom delegate class for image picker +@interface ImagePickerDelegate : NSObject +@end + +@implementation ImagePickerDelegate + +// Delegate method called when an image is picked +- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { + NSString *mediaType = info[UIImagePickerControllerMediaType]; + if ([mediaType isEqualToString:(NSString *)kUTTypeImage]) { + UIImage *selectedImage = info[UIImagePickerControllerOriginalImage]; + NSURL *imageURL = info[UIImagePickerControllerImageURL]; + NSString *imageName = [imageURL lastPathComponent]; + + showAlert("Selected Image", [imageName UTF8String]); + } + + [picker dismissViewControllerAnimated:YES completion:nil]; +} + +// Delegate method called when the image picker is canceled +- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker { + [picker dismissViewControllerAnimated:YES completion:nil]; +} + +@end + void pickImage() { UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init]; imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; - UIViewController *rootViewController = [[[[UIApplication sharedApplication] delegate] window] rootViewController]; + // Create an instance of our custom delegate class + ImagePickerDelegate *imagePickerDelegate = [[ImagePickerDelegate alloc] init]; + imagePicker.delegate = imagePickerDelegate; - // Define a block type for the delegate - typedef void (^ImagePickerCompletionBlock)(UIImagePickerController *picker, NSDictionary *info); - - // Create the block for delegate - ImagePickerCompletionBlock completionBlock = ^(UIImagePickerController *picker, NSDictionary *info) { - NSString *mediaType = info[UIImagePickerControllerMediaType]; - if ([mediaType isEqualToString:(NSString *)kUTTypeImage]) { - UIImage *selectedImage = info[UIImagePickerControllerOriginalImage]; - NSURL *imageURL = info[UIImagePickerControllerImageURL]; - NSString *imageName = [imageURL lastPathComponent]; - - showAlert("Selected Image", [imageName UTF8String]); - } - - [picker dismissViewControllerAnimated:YES completion:nil]; - }; - - // Assign the block to the delegate - imagePicker.delegate = (id)completionBlock; - - // Present the image picker + // Get the root view controller to present the image picker + UIViewController *rootViewController = [[[[UIApplication sharedApplication] delegate] window] rootViewController]; [rootViewController presentViewController:imagePicker animated:YES completion:nil]; } \ No newline at end of file