2015-07-24 3 views
2

У меня 2 просмотра. Первый вид содержит две кнопки: Камера и Библиотека. Когда я выбираю библиотеку, я получаю доступ к рулону камеры. Я хочу выбрать фотографию и открыть ее в другом представлении. До сих пор я пишу следующие функции:выберите фотографию из библиотеки и откройте ее в другом виде

- (IBAction)chooseExistingPhoto :(id)sender{ 

NSLog(@"chooseExistingPhoto"); 
pickerLibrary = [[UIImagePickerController alloc] init]; 
pickerLibrary.delegate = self; 
[pickerLibrary setSourceType:UIImagePickerControllerSourceTypePhotoLibrary]; 
[self presentViewController:pickerLibrary animated:YES completion:NULL]; 
NSLog(@"chooseExistingPhoto END"); 
} 

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

NSLog(@"imagePickerController"); 
imagePreview.hidden = YES; 
captureImage.hidden = NO; 
image = [info objectForKey:@"UIImagePickerControllerOriginalImage"]; 
//[captureImage setImage:image]; 

//ImageLibViewController *svc = [[ImageLibViewController alloc] initWithNibName:@"ImageLibViewController" bundle:nil]; 
//svc.imageLibModified.image = image; 

[self dismissViewControllerAnimated:NO completion:^(void){ 

    UIStoryboard  * storyboardd = self.storyboard; 
    NSString   * storyboardName = [storyboardd valueForKey:@"name"]; 
    UIStoryboard  * storyboard  = [UIStoryboard storyboardWithName:storyboardName bundle: nil]; 
    ImageLibViewController * vc  = [storyboard instantiateViewControllerWithIdentifier:@"imageLib"]; 

    vc.imageLibModified.image = image; 

    [self presentViewController:vc animated:YES completion:nil]; 
    //[picker showViewController:vc sender:vc]; 
}]; 

witch open my image in the same view. Как я мог открыть это изображение в другом представлении? и мой второй вопрос, где я ставил свою сессию в viewdidload или viewdidappear?

+0

я говорить о сессии, потому что я откройте мою камеру в моем первом представлении. – AlgroDev

+0

попробуйте сделать это, не отпуская текущий контроллер представления, я имею в виду удалить shutViewController, но сохраните код, записанный в блоке завершения. дайте мне знать, что произойдет. –

+0

Я пробовал, но это не работает, потому что если я не использую shutViewController, я буду никогда не покидайте Библиотеку. – AlgroDev

ответ

0

Поместите этот код в контроллер представления, где вы хотите, чтобы отобразить Фотопленка

// Это будет слушать уведомления от другого контроллера представления

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(openGallery) name:@"openGallery:" object:nil]; 




-(void)openGallery 
{ 

    UIImagePickerController *picker = [[UIImagePickerController alloc] init]; 
    picker.delegate = self; 
    picker.allowsEditing = YES; 
    picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; 

    [self presentViewController:picker animated:YES completion:NULL]; 

    NSLog(@"open gallery"); 
} 

// Это как кнопка нажмите действия, когда нажатии на кнопку она уведомит другую точку зрения, другая точка зрения имеет слушателей, и он будет выполнять указанный метод

- (IBAction)chooseExistingPhoto :(id)sender 
    { 

    [[NSNotificationCenter defaultCenter]  postNotificationName:@"openGallery:" object:nil userInfo:nil]; 

    } 

Пишут методы делегата и пр otocols и все в контроллере просмотра, где вы собираетесь отображать рулон камеры. Просто поставьте уведомитель в действие кнопки.

Это будет работать, я сделал это

+0

я есть ошибка с [поп removeSuperview] – AlgroDev

+0

не использовать этот поп, используйте ваш взгляд – vijeesh

+0

Thks Вижееш, как я могу получить изображение наведена из Lib – AlgroDev

0

быстрое 3

Чтобы открыть камеру

if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.photoLibrary) { 
      let imagePicker = UIImagePickerController() 
      imagePicker.delegate = self 
      imagePicker.sourceType = UIImagePickerControllerSourceType.camera; 
      imagePicker.allowsEditing = false 
      imagePicker.cameraDevice = UIImagePickerControllerCameraDevice.front; 
      self.present(imagePicker, animated: true, completion: nil) 
     } 

Чтобы открыть Библиотека

if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.PhotoLibrary) { 
       let imagePicker = UIImagePickerController() 
       imagePicker.delegate = self 
       imagePicker.sourceType = UIImagePickerControllerSourceType.PhotoLibrary; 
       imagePicker.allowsEditing = false 
       self.presentViewController(imagePicker, animated: true, completion: nil) 
      } 

методы делегата

private func imagePickerController(picker: UIImagePickerController,didFinishPickingMediaWithInfo info: [String : AnyObject]) { 
    _ = info[UIImagePickerControllerOriginalImage] as! UIImage //get the image from info 
    dismiss(animated:true, completion: nil) 
} 

func imagePickerControllerDidCancel(_ picker: UIImagePickerController) { 
    dismiss(animated: true,completion: nil) 
} 

Примечание: здесь в коде imagePicker.allowsEditing = ложь , если вы выбираете allowsEditing = верно, то вам нужно изменить UIImagePickerControllerEditedImage вместо UIImagePickerControllerOriginalImage

Смежные вопросы