Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 显示UIImagePickerController后UITextfields为空_Iphone_Objective C_Ios_Xcode4 - Fatal编程技术网

Iphone 显示UIImagePickerController后UITextfields为空

Iphone 显示UIImagePickerController后UITextfields为空,iphone,objective-c,ios,xcode4,Iphone,Objective C,Ios,Xcode4,我有一个带有两个UITextField和一个按钮的表单。用户在这两个字段中输入值,然后单击按钮。这将显示UIImagePickerController,以便他/她可以拍照。单击图片预览上的“使用”按钮后,UIImagePickerController将被解除,但在两个UITextField中输入的任何文本都将消失。这只发生在IPhone(而不是IPad)上,并且只发生在用户使用相机而不是从相机卷中选择图片时。这是代码 -(IBAction)btnTakePic { if([UIImage

我有一个带有两个UITextField和一个按钮的表单。用户在这两个字段中输入值,然后单击按钮。这将显示UIImagePickerController,以便他/她可以拍照。单击图片预览上的“使用”按钮后,UIImagePickerController将被解除,但在两个UITextField中输入的任何文本都将消失。这只发生在IPhone(而不是IPad)上,并且只发生在用户使用相机而不是从相机卷中选择图片时。这是代码

-(IBAction)btnTakePic {
    if([UIImagePickerController isSourceTypeAvailable: UIImagePickerControllerSourceTypeCamera]) {
    UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
    imagePicker.delegate = self;
    imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
    imagePicker.mediaTypes = [NSArray arrayWithObjects: (NSString *) kUTTypeImage, nil];
    imagePicker.cameraDevice = UIImagePickerControllerCameraDeviceRear;
    imagePicker.allowsEditing = NO;
    [self presentModalViewController: imagePicker animated:YES];
    [imagePicker release];
}
else if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeSavedPhotosAlbum])
{
    UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
    imagePicker.delegate = self;
    imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
    imagePicker.mediaTypes = [NSArray arrayWithObjects:(NSString *) kUTTypeImage, nil];
    imagePicker.allowsEditing = NO;
    [self presentModalViewController:imagePicker animated:YES];
    [imagePicker release];
}
}

我已经通过了调试器,在进入picker DidFinishPickingWithMediaInfo时,文本字段已经为空,因此问题似乎没有出现在那里。IPad运行的是4.3.3,IPhone运行的是4.2.1,该应用程序正在XCode 4中开发,以4.3作为基本sdk,以4.2作为部署目标。非常感谢您的帮助。

我怀疑您收到了内存警告(在使用相机时很常见),并且视图正在卸载,当视图重新加载(从图像选择器返回后)时,视图处于默认状态,框为空

输入框的值时(在变量中),需要存储框的值,然后在viewDidLoad中检查是否有值,如果确实将文本字段文本属性设置为所需的值


检查控制台,您很可能会出现内存警告级别1(或2)

我怀疑同样的情况@Bob:您可以通过在viewDidUnload中设置断点来验证这一点:对于视图控制器,如果存在内存警告并且视图已卸载,则将调用该断点。Simon和progrmr-感谢你们两位。这正是发生的事情。我对IOS开发还是相当陌生的。但我的问题是,我是否需要关注这个内存警告(它是1级的),还是这只是与相机相关的东西,我可以忽略它?@Bob这是完全正常的,事实上内存警告是为了让你有机会释放任何不需要的内存,这是标准机制。相机运行所需的内存很大,除非您的应用程序占用的内存非常小,否则您将收到警告。2级警告更为严重,如果你得到了真正需要释放内存的警告,这是系统放弃应用程序之前的最后一次努力。永远不要忽略警告,释放你不需要的东西,或者可以重新加载,如果系统在级别1中没有回收足够的内存,你将获得级别2。