有啥方法可以从 UITableView 索引中呈现 UIPopover 吗?
Posted
技术标签:
【中文标题】有啥方法可以从 UITableView 索引中呈现 UIPopover 吗?【英文标题】:Is there any way to present an UIPopover from an UITableView index?有什么方法可以从 UITableView 索引中呈现 UIPopover 吗? 【发布时间】:2010-07-30 12:56:48 【问题描述】:我想展示一个来自 UITableView 特定索引的 UIPopover。 这是我的代码:
if (indexPath.row == 5)
[tableView deselectRowAtIndexPath:indexPath animated:YES];
EnginesPopoverController *enginesPopoverController = [[EnginesPopoverController alloc] initWithNibName:@"EnginesPopoverController" bundle:nil];
UIPopoverController *popover = [[UIPopoverController alloc] initWithContentViewController:enginesPopoverController];
self.popoverController = popover;
popoverController.delegate = self;
[popover release];
[enginesPopoverController release];
CGPoint point = 670, 600;
CGSize size = 450, 216;
[popoverController presentPopoverFromRect:CGRectMake(point.x, point.y, size.width, size.height) inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
如果我尝试从 UIButton 呈现 Popover,它会顺利...
谢谢!
【问题讨论】:
这段代码是在哪个方法中定义的? - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 【参考方案1】:这就是我的工作:
CGRect cellRect = [self.tableView rectForRowAtIndexPath:indexPath];
CGRect popoverRect = CGRectMake(self.view.bounds.size.width - self.popoverController.popoverContentSize.width,
CGRectGetMidY(cellRect),
1.0, 1.0);
我使用的x
位置将弹出框放置在屏幕的右侧。这可能不是你想要的。要找到实际的触摸点,您可以使用手势识别器。
作为回报,请尝试回答我的相关问题:Popover's arrow to track an object in a scrollview
【讨论】:
【参考方案2】:操纵大卫的代码我得到了这个: (我的弹出窗口称为“storytPop”)- 我的弹出窗口来自工具栏,我希望下一个 tableview 显示在右侧。
CGRect cellRect = [self.tableView rectForRowAtIndexPath:indexPath];
[self.storytPop presentPopoverFromRect:cellRect inView:self.view permittedArrowDirections:UIPopoverArrowDirectionLeft animated:YES];
【讨论】:
以上是关于有啥方法可以从 UITableView 索引中呈现 UIPopover 吗?的主要内容,如果未能解决你的问题,请参考以下文章
从分离的 UITableView 推送/呈现 ViewController