让UIImagePickerView在iPad应用程序中的UITableView中工作

时间:2011-11-03 08:42:58

标签: iphone ipad uitableview uiimagepickercontroller uipopovercontroller

我有一个小问题。我正在开发一个iPad应用程序,并且我有一个UItableView。在桌子内部,每个单元格中的按钮都处于完美位置。现在,当用户点击这些按钮时,我希望打开一个UIImagePickerView,以便他可以选择图像并将其设置在那里。

现在,我正在使用UIPopOver的对象来打开imagePicker,我面临着这个问题。我需要popOver指向按钮单击它的完美位置。假设表格中第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仅指向第一个可见行。当用户点击TableView中的任何按钮时,我调用一个名为- (void) setImage: (id) sender的方法。我按如下方式分配按钮btnActive:

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

我完全得到了按钮的标签,但我无法在完美的地方获得popOver点。我猜这是因为每次btnActive的框架保持不变。我可能错了。请帮我解决这个问题。一百万提前感谢!

1 个答案:

答案 0 :(得分:1)

tblView不是按钮的超级视图。尝试使用cell.contentViewcell,具体取决于您如何布置UITableViewCell子类视图层次结构。您必须确定单击按钮的单元格。

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