Начало работы UIImagePickerView внутри UITableView в приложении для iPad - PullRequest
0 голосов
/ 03 ноября 2011

У меня небольшая проблема.Я работаю над приложением для iPad, и у меня есть UItableView.Внутри этого стола есть кнопки в каждой ячейке в идеальном положении.Теперь, когда пользователь нажимает на эти кнопки, я хочу открыть UIImagePickerView, чтобы он мог выбрать изображение и установить его там.

Теперь я использую объект UIPopOver, чтобы открыть imagePicker, и я столкнулся с проблемой.Мне нужно, чтобы всплывающее окно указывало на идеальное место, в котором кнопка нажимала его.Предположим, что кнопка из 3-й строки в таблице вызывает ее, тогда popOver должен открыться соответственно.

Я использую этот код, чтобы открыть popOver и установить его фрейм:

 UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
    imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
    imagePicker.delegate = self;
 CGRect fr = tblView.frame;

    fr.origin.x = fr.origin.x + btnActive.frame.origin.x;
    fr.origin.y = fr.origin.y + btnActive.frame.origin.y;
    fr.size = CGSizeMake(320, 480);


    popOver = [[UIPopoverController alloc] initWithContentViewController:imagePicker];
    //self.popoverController = popOver;          
    popOver.delegate = self;
    [popOver presentPopoverFromRect:btnActive.frame 
                             inView:tblView
           permittedArrowDirections:UIPopoverArrowDirectionAny 
                           animated:YES];

    [imagePicker release];

Теперь,здесь происходит следующее: всякий раз, когда я нажимаю на строки кнопки, popOver указывает только на первую видимую строку.Я вызываю метод с именем - (void) setImage: (id) sender, когда пользователь нажимает на любую из этих кнопок в TableView.И я назначаю кнопку btnActive следующим образом:

 UIButton *btn = (UIButton *)sender;
 btnActive = btn;

Я отлично получаю метку кнопки, но не могу получить точку всплытия в идеальном месте.Я думаю, это потому, что каждый раз кадр btnActive остается неизменным.Я могу быть не прав.Пожалуйста, помогите мне с этим вопросом.Миллион заранее спасибо!

1 Ответ

1 голос
/ 04 ноября 2011

tblView не суперпредставление кнопки.попробуйте использовать cell.contentView или cell в зависимости от того, как у вас есть иерархия представлений подкласса UITableViewCell.Вам нужно будет определить, в какой ячейке была нажата кнопка.

[popOver presentPopoverFromRect:btnActive.frame 
                         inView:cell.contentView
       permittedArrowDirections:UIPopoverArrowDirectionAny 
                       animated:YES];
...