UITableViewCell 上的 UIPopoverController
Posted
技术标签:
【中文标题】UITableViewCell 上的 UIPopoverController【英文标题】:UIPopoverController over UITableViewCell 【发布时间】:2011-04-18 15:58:43 【问题描述】:我想以编程方式在表格视图中选择一行,然后显示我的弹出框并让箭头指向单元格。
当表格没有滚动时,此代码可以正常工作,对于滚动表格视图,弹出箭头的位置不正确。
[self.EventsTableView selectRowAtIndexPath:indexPath
animated:YES
scrollPosition:UITableViewScrollPositionMiddle];
[popoverController presentPopoverFromRect:CGRectOffset(cell.frame, 0, cell.frame.size.height + self.EventsTableView.contentOffset)
inView:self.view
permittedArrowDirections:UIPopoverArrowDirectionLeft
animated:YES];
感谢您的帮助
【问题讨论】:
【参考方案1】:您应该将单元格作为视图传递。您很可能希望为矩形传递单元格的边界(cell.bounds,而不是 cell.frame)。
【讨论】:
正确,很好的答案简单地说:[popoverController presentPopoverFromRect:cell.bounds inView:cell allowedArrowDirections:UIPopoverArrowDirectionLeft animated:YES];谢谢。 我仍然需要处理不可见的行! 您的意思是当一个单元格以不可见的方式滚动时?在这种情况下,您可能希望使用scrollToRowAtIndexPath:atScrollPosition:animated:
将其移至视图中。【参考方案2】:
当用户向下滚动列表时,上述方法似乎对我不起作用。找到相对于滚动量的单元格位置是诀窍。
CGRect rect = [tableView convertRect:[tableView rectForRowAtIndexPath:indexPath]
toView:tableView];
[popoverController presentPopoverFromRect:rect
inView:tableView
permittedArrowDirections:UIPopoverArrowDirectionAny
animated:YES];
【讨论】:
以上是关于UITableViewCell 上的 UIPopoverController的主要内容,如果未能解决你的问题,请参考以下文章
如何使 UITableViewCell 上的 UIProgressView 立即更改?
UITableViewCell 内的 UIView 上的 UIGestureRecognizer