На мой взгляд, у меня есть несколько полей, некоторые из них скрыты.
Есть сегмент контроллера с 2 опциями.
Чтобы включить кнопку «сделать фото», она должна быть установлена на 1
.
Итак, я заполняю поля, которые вижу, нажимаю сегментированный контроллер в позиции 1
, заполняю другое поле, которое было скрыто, и делаю снимок.
Когда я вернулся с вида фотографии, все поля пусты иСелектор отменен (setSelectedSegmentIndex:-1
).
Если я снова нажму этот селектор в положении 1
, скрытое поле будет пустым, но UIImageView покажет фотографию, которую я сделал ...
, если я установлю вviewDidLoad setSelectedSegmentIndex:1
, так как я закрываю photoView, все поля отображаются пустыми (снова UIImageview показывает картинку).
Я также пытался сохранить содержимое каждого поля в переменных и вернуть все обратно в viewDidLoadтаким образом
if (([name length] != 0) || ([price length] != 0) || (category length] != 0)) {
//restore all the fields from those NSString variables and set segment on 1
}
, но приложение падает.
У меня есть эта проблема, только если я запускаю приложение на iPhone, а не на симуляторе, потому что симулятор берет свое изображение прямо с рулона камеры.
Это код для фотографирования.
-(IBAction)takePhoto:(id)sender {
if ([UIImagePickerController isSourceTypeAvailable: UIImagePickerControllerSourceTypeCamera]) {
self.imgPicker.sourceType = UIImagePickerControllerSourceTypeCamera;
self.imgPicker.cameraCaptureMode = UIImagePickerControllerCameraCaptureModePhoto;
} else {
imgPicker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;
}
[self presentModalViewController:self.imgPicker animated:YES];
}
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
[picker dismissModalViewControllerAnimated:YES];
int r = arc4random() % 9999;
NSDate *date = [NSDate date];
NSString *photoName = [dateNameFormatter stringFromDate:date];
photoName = [photoName stringByAppendingString:[NSString stringWithFormat:@"%d", r]];
if (imagePath) {
[imagePath release];
}
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
imagePath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.png", photoName]];
[imagePath retain];
UIImage *picture = [[info objectForKey:UIImagePickerControllerOriginalImage] retain];
// ----- CODE FOR SCALE THE IMAGE ----- //
if (picture.size.width == 1936) {
picture = [picture scaleToSize:CGSizeMake(480.0f, 720.0f)];
} else {
picture = [picture scaleToSize:CGSizeMake(720.0f, 480.0f)];
}
photoPreview.image = picture;
photoPreview.contentMode = UIViewContentModeScaleAspectFit;
CGRect frame = photoPreview.frame;
if (picture.size.width == 480) {
frame.size.width = 111.3;
frame.size.height =167;
} else {
frame.size.width = 167;
frame.size.height =111.3;
}
photoPreview.frame = frame;
// ----- ----- - END CODE - ----- ----- //
NSData *webData = UIImagePNGRepresentation(picture);
//CGImageRelease([picture CGImage]);
[webData writeToFile:imagePath atomically:YES];
}
-(void)imagePickerControllerDidCancel:(UIImagePickerController *)picker {
[picker dismissModalViewControllerAnimated:YES];
}