我花了很长时间尝试从tableview创建一个居中的popover。我最终设法让它发挥作用:
(我认为......)这些步骤:
使用以下方法在我的UITableViewController中实现UIPopoverPresentationControllerDelegate协议:
func adaptivePresentationStyleForPresentationController(controller:UIPresentationController) - > UIModalPresentationStyle { 回来。没有 }
现在,我认为我不理解为什么这有效。
如果我选中任何“路线”选项,则弹出框会显示在屏幕外。这是因为popover位于视图之外(目前占据整个屏幕)?如何确定锚点?
建议使用首选显式大小吗?
答案 0 :(得分:0)
使用UITableView
作为锚点意味着当您使用箭头时,箭头会定位到对象的边缘,然后,如您所推测的那样,在屏幕上显示segued-to view controller。
如果您想要箭头,而不是将segue绑定到UITableView
,您可以像我一样(按另一个Stack Overflow帖子的提示)并在表格视图后面放置一个隐藏的锚点按钮。然后在触摸单元格时,将按钮移动到触摸点,然后执行segue。
UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];
CGPoint tapPoint = CGPointMake(cell.frame.origin.x + cell.frame.size.width - (self.hiddenAnchorButton.frame.size.width / 2),
cell.center.y + self.tableView.frame.origin.y - self.tableView.contentOffset.y);
self.hiddenAnchorButton.center = tapPoint;
[self performSegueWithIdentifier:@"yourSegueName" sender:cell];