UIImagePickerController - нажатие на Album TableView или выбор альбома приводит к тому, что таблица становится пустой? iOS5 - PullRequest
1 голос
/ 15 марта 2012

Я пытаюсь воспроизвести подобный медиа-сборщик, который похож на тот, что на страницах. Внутри UIPopoverController существует UISegmentedControl, который выбирает разные типы носителей. Один из сегментированных контролов, который у меня есть, - это помеченные изображения. Я хочу иметь возможность выбрать этот сегмент и иметь представленный ниже вид ImagePicker.

Я рядом. У меня есть несколько вопросов. Представляя ВК, я получаю: Popover with ImagePicker

Я получаю следующее в отладчике: UIStatusBarStyleBlackTranslucent is not available on this device. Не уверен, откуда это исходит. Я пробовал с и без:

        imagePicker.modalInPopover = YES;
        imagePicker.modalPresentationStyle = UIModalPresentationCurrentContext;

Хотя я все еще не могу заставить его работать правильно. Представляет просто отлично. Я вижу UISegmentedControl, я вижу свои другие медиа-страницы, я нажимаю на сегмент Image и вижу ImagePicker, в заголовке «Фотографии» есть кнопка «Отмена», от которой нужно избавиться, и отображаются два альбома, которые есть на устройстве ,

Если я коснусь в любом месте таблицы (в альбоме или нет), два альбома исчезнут. Кнопки NavBar и Cancel все еще там, хотя альбомов больше нет. Нажатие на альбом выделяет строку, но не показывает изображения в альбоме.

Popover after tapping image Picker

Другая странная часть моего кода заключается в том, что делегатом для средства выбора изображений является виртуальный канал, представляющий контроллер UIPopoverController. Не уверен, если это играет на этом. Когда я нажимаю кнопку «Отмена», я получаю:

-[PLUILibraryViewController performSelector:withObject:withObject:]: message sent to deallocated instance

Вот мой код для представления сборщика.

- (void) setupImagePicker {

    IoScreenEditorViewController * ioScreenEditorViewController = (IoScreenEditorViewController *)[UIAppDelegate.ioMainViewController currentViewController];
    ioScreenEditorViewController.elementSelectedFromList = [elementsForPage objectAtIndex:0];
        // Show an image picker to allow the user to choose a new photo.
    UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
    imagePicker.delegate = ioScreenEditorViewController;
    imagePicker.allowsEditing = NO;
    NSArray * ourMediaTypes = [[NSArray alloc] initWithObjects: (NSString *) kUTTypeImage, nil];
    [imagePicker setMediaTypes: ourMediaTypes];
    [ourMediaTypes release];

    if ([UIImagePickerController isSourceTypeAvailable: UIImagePickerControllerSourceTypeCamera]) {
            //  imagePicker.sourceType =  UIImagePickerControllerSourceTypeCamera;
        imagePicker.sourceType =  UIImagePickerControllerSourceTypePhotoLibrary;

    } else {
        imagePicker.sourceType =  UIImagePickerControllerSourceTypePhotoLibrary;
    }

    [imagePicker.view setFrame:CGRectMake(0,0, 340, 500)]; // just for testing

        //imagePicker.modalInPopover = YES;
        //imagePicker.modalPresentationStyle = UIModalPresentationCurrentContext;
   [self.view addSubview:imagePicker.view];

    [imagePicker release];

}

Ответы [ 2 ]

0 голосов
/ 27 мая 2013

Хотя я до сих пор не смог скрыть кнопку «Отмена» средства выбора, я бы посоветовал вам пересмотреть способ ее представления.

Чтобы получить помощь сообщества разработчиков iOS по этому поводу, я создал пример проекта, пожалуйста, скачайте его. В проекте вы можете видеть, что я использую вид контроллера сдерживания, чтобы вывести пикир на экран.

Возможно, это лучший способ для вас сделать это тоже?

https://bitbucket.org/danielphillips/image-picker-demo

0 голосов
/ 15 марта 2012

Я изменил тип класса, из которого вызывается Средство выбора, на UIViewController, а затем изменил код презентации так:

    imagePicker.modalInPopover = YES;
    imagePicker.modalPresentationStyle = UIModalPresentationCurrentContext;
    [self presentViewController:imagePicker animated:NO  completion:^{  }]; 

Я все еще получаю кнопку Отмена, хотя картинкаПикер действительно работает так, как должен.

...