gpt4 book ai didi

iOS UIImagePickerController 和 ModalViewController

转载 作者:行者123 更新时间:2023-11-28 17:46:30 24 4
gpt4 key购买 nike

我编写了一段代码,它在基于 PhoneGap 的应用程序中运行。该代码有一个插件,当使用以下代码单击网页上的某个绑定(bind)按钮时,该插件会启动 UIImagePickerController。

PhotoSelectorCommand.h

#import <Foundation/Foundation.h>
#import "PhoneGapCommand.h"

@interface PhotoSelectorCommand : PhoneGapCommand<UINavigationControllerDelegate, UIImagePickerControllerDelegate> {
NSString *url;
NSString *extra;
}

@property (nonatomic, copy) NSString *url;
@property (nonatomic, copy) NSString *extra;

- (void) startPhotoSelector:(NSMutableArray *)arguments withDict:(NSMutableDictionary *)options;
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info;
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker;

@end

PhotoSelectorCommand.m

#import "PhotoSelectorCommand.h"
#import "PhoneGapViewController.h"
#import "PhotoUploaderViewController.h"

@implementation PhotoSelectorCommand

@synthesize url;
@synthesize extra;

- (void) startPhotoSelector:(NSMutableArray*)arguments withDict:(NSMutableDictionary*)options // args: url
{
NSUInteger argc = [arguments count];

if (argc < 1) {
return;
}
self.url = [arguments objectAtIndex:0];
if (argc > 1) {
self.extra = [arguments objectAtIndex:1];
}

UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
imagePicker.delegate = self;
imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;

PhoneGapViewController* cont = (PhoneGapViewController *)[super appViewController];
[cont presentModalViewController:imagePicker animated:YES];
}

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
//on selected

[picker dismissModalViewControllerAnimated:YES];

PhotoUploaderViewController *photoUploader = [PhotoUploaderViewController alloc];

PhoneGapViewController* cont = (PhoneGapViewController *)[super appViewController];

[cont presentModalViewController:photoUploader animated:YES];

[photoUploader.view removeFromSuperview];
[picker release];

[picker.view removeFromSuperview];
[picker release];
}

- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker {
//on cancel
NSString *failureCallback = [NSString stringWithFormat:@"PhotoSelector._onError('%@');", @"No image selected."];
[webView stringByEvaluatingJavaScriptFromString:failureCallback];

[picker dismissModalViewControllerAnimated:YES];
[picker.view removeFromSuperview];
[picker release];
}

@end

PhotoSelectorViewController.h

#import <UIKit/UIKit.h>

@interface PhotoUploaderViewController : UIViewController {

}

@end

PhotoSelectorViewController.m

#import "PhotoSelectorViewController.h"

@implementation PhotoSelectorViewController

-(void)init {
}
- (void)viewDidLoad {
[super viewDidLoad];
}
- (void)didReceiveMemoryWarning {
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];
}
- (void)viewDidUnload {
[super viewDidUnload];
}
- (void)dealloc {
[super dealloc];
}

@end

上面的代码一直有效,直到它显示 UIImagePickerController,用户可以在其中选择图像。一旦选择了任何图像, Controller 就会关闭,但不会像 UIImagePickerController 那样呈现另一个 View 。知道为什么吗?

最佳答案

我不知道你为什么要解雇选择器?只有在 Controller 被关闭后才会调用此方法。另外,您要释放两次选择器和 removerFromSuperView?请尝试使用以下代码并查看注释行。

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
//on selected

// [picker dismissModalViewControllerAnimated:YES]; you need not to do this

PhotoUploaderViewController *photoUploader = [PhotoUploaderViewController alloc];

PhoneGapViewController* cont = (PhoneGapViewController *)[super appViewController];

[cont presentModalViewController:photoUploader animated:YES];

// [photoUploader.view removeFromSuperview]; // where you have added this view?
// [picker release]; //you do not own this object..

//[picker.view removeFromSuperview]; // and ?
//[picker release]; // same here
}

关于iOS UIImagePickerController 和 ModalViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5688437/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com