popover不会显示时单击细胞

问题描述:

我想使用一个uitableviewrowaction来显示popoverview,其中用户可以选择一种颜色。当我选择一个导航项目作为发件人时,popover效果很好。只要我将发件人更改为tableViewCell,背景会变暗,但popover不会显示。这里是我的代码popover不会显示时单击细胞

酥料饼从导航项目

enter image description here

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 
} 
+0

检查self.mainTableViewOutlet.cellForRowAtIndexPath(路径)返回零,而我不是看你在prepareForSegue与发送者做任何事情 – Arbitur 2015-02-24 15:22:01

+0

你是对的,我不得不在调用segue方法时调用colorPopover.popoverViewController.sourceRect = sender.frame。现在它的工作。谢谢。 – Christian 2015-02-24 17:14:55

解决方案做准备:

因为我叫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