让 UIImagePickerView 在 iPad 应用程序的 UITableView 中工作
Posted
技术标签:
【中文标题】让 UIImagePickerView 在 iPad 应用程序的 UITableView 中工作【英文标题】:Getting the UIImagePickerView work inside a UITableView in an iPad app 【发布时间】:2011-11-03 08:42:58 【问题描述】:我有一个小问题。我正在开发一个 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】:tblView
不是按钮的超级视图。尝试使用cell.contentView
或cell
,具体取决于您如何布置 UITableViewCell 子类视图层次结构。您必须确定在哪个单元格中单击了按钮。
[popOver presentPopoverFromRect:btnActive.frame
inView:cell.contentView
permittedArrowDirections:UIPopoverArrowDirectionAny
animated:YES];
【讨论】:
以上是关于让 UIImagePickerView 在 iPad 应用程序的 UITableView 中工作的主要内容,如果未能解决你的问题,请参考以下文章