2015-02-24 4 views
0

Я хочу использовать 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] 
} 

подготовиться к Segue

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 (путь) возвращает ноль, и Im не видя, что вы делаете что-либо с отправителем в prepareForSegue – Arbitur

+0

Вы правы, мне пришлось вызвать colorPopover.popoverViewController.sourceRect = sender.frame в режиме подготовки к методу segue. Теперь его работа. Благодарю. – Christian

ответ

0

Решение:

Поскольку я назвал performSegue программно, я должен определить sourceRect в popoverViewController:

colorPopover = segue.destinationViewController as SBColorPopover 
     colorPopover.modalPresentationStyle =  
UIModalPresentationStyle.Popover 
     colorPopover.popoverPresentationController!.delegate = self 
//define sourceRect 
     colorPopover.popoverPresentationController?.sourceRect = 
sender!.frame 
     colorPopover.delegate = self 
Смежные вопросы