popover不会显示时单击细胞
问题描述:
我想使用一个uitableviewrowaction来显示popoverview,其中用户可以选择一种颜色。当我选择一个导航项目作为发件人时,popover效果很好。只要我将发件人更改为tableViewCell,背景会变暗,但popover不会显示。这里是我的代码popover不会显示时单击细胞
酥料饼从导航项目
uitableviewrowaction
override func tableView(tableView: UITableView, editActionsForRowAtIndexPath
indexPath: NSIndexPath) -> [AnyObject]?
{
var colorRowAction = UITableViewRowAction(style: UITableViewRowActionStyle.Normal, title: "Color", handler:
{ (action:UITableViewRowAction!, path: NSIndexPath!) -> Void in
self.performSegueWithIdentifier("popoverSegue", sender:self.mainTableViewOutlet.cellForRowAtIndexPath(path))
})
return [colorRowAction, deleteRowAction]
}
提出了赛格瑞
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?)
{
if segue.identifier == "popoverSegue" {
colorPopover = segue.destinationViewController as SBColorPopover
colorPopover.modalPresentationStyle =
UIModalPresentationStyle.Popover
colorPopover.popoverPresentationController!.delegate = self
colorPopover.delegate = self
}
答
解决方案做准备:
因为我叫performSegue编程,我必须定义popoverViewController的与sourceRect:
colorPopover = segue.destinationViewController as SBColorPopover
colorPopover.modalPresentationStyle =
UIModalPresentationStyle.Popover
colorPopover.popoverPresentationController!.delegate = self
//define sourceRect
colorPopover.popoverPresentationController?.sourceRect =
sender!.frame
colorPopover.delegate = self
检查self.mainTableViewOutlet.cellForRowAtIndexPath(路径)返回零,而我不是看你在prepareForSegue与发送者做任何事情 – Arbitur 2015-02-24 15:22:01
你是对的,我不得不在调用segue方法时调用colorPopover.popoverViewController.sourceRect = sender.frame。现在它的工作。谢谢。 – Christian 2015-02-24 17:14:55