2015-09-06 42 views
13

Ciao c'è un modo per aprire un UIPresentationController quando si fa scorrere il dito verso sinistra e si fa clic su Edit?Swift - UITableView editActionsForRowAtIndexPath aperto UIPresentationController quando si fa clic su Modifica

func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [UITableViewRowAction]? { 
     let delete = .... 
     let edit = UITableViewRowAction(style: .Normal, title: "Edit") { action, index in 
      //OPEN UIPresentationController HERE 
     } 
     return [delete, edit] 
} 

risposta

7

Lo stesso che @patchdiaz, sono sicuro al 100% ciò che si vorrebbe fare. Tuttavia, questo blocco di codice può essere sufficiente per essere personalizzato per raggiungere il tuo obiettivo:

override func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [AnyObject]? { 
    let edit = UITableViewRowAction(style: .Normal, title: "Edit") { action, index in 
     // OPEN UIPresentationController HERE 
     let vc = UIViewController(nibName: nil, bundle: nil) 
     vc.view.frame = CGRect(x: 0, y: 0, width: 100, height: 200) 
     vc.view.backgroundColor = UIColor.orangeColor() 
     vc.modalPresentationStyle = .Popover 

     let popover = vc.popoverPresentationController! 
     let cell = tableView.cellForRowAtIndexPath(indexPath)! 

     var cellAbsolutePosition = cell.superview!.convertPoint(cell.frame.origin, toView: nil) 
     cellAbsolutePosition.x = cell.frame.width - 60 
     popover.sourceRect = CGRect(origin: cellAbsolutePosition, size: cell.frame.size) 
     popover.sourceView = tableView 

     self.presentViewController(vc, animated: true, completion: nil) 
    } 
    return [edit] 
} 

Mostrerà un popover proprio al 'Modifica' posizione pulsante mi piace questo:

enter image description here

+0

ho detto che è solo un esempio di come farlo e abbastanza per la personalizzazione :) Si prega di fare il resto perché sono sicuro di sapere come farlo – Ducky

+0

Non riesco a correggere la freccia per essere vicino Modifica, e non so come impostare l'altezza per vc che uso come storyboard –

+0

Dude, è un problema completamente diverso. Se ti aspetti che le persone ti aiutino in modo più efficiente, fornisci maggiori dettagli. – Ducky

2

Non so cosa stai chiedendo qui. Qualcosa del genere dovrebbe funzionare (questo è a Swift 2):

override func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> 
     [UITableViewRowAction]? { 
      let delete = ... 
      let edit = UITableViewRowAction(style: .Normal, title: "Edit") { [weak self] _ in 
       let viewController = ... 
       viewController.modalPresentationStyle = .Custom 
       self?.presentViewController(viewController, animated: true, completion: nil) 
      } 
      return [delete, edit] 
    }