2015-09-06 17 views
13

Hallo, gibt es eine Möglichkeit, einen UIPresentationController zu öffnen, wenn Swipe nach links ausgelöst wird und es klicken Sie Edit?Swift - UITableView editActionsForRowAtIndexPath Öffnen Sie UIPresentationController, wenn Sie auf Bearbeiten klicken

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] 
} 

Antwort

7

Die gleichen wie @patchdiaz, ich bin nicht 100% sicher, was Sie tun mögen. Allerdings kann dieser Code-Block genug sein, die individuell gestaltet werden Ihr Ziel zu erreichen:

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] 
} 

Es ein popover direkt an der Schaltfläche ‚Bearbeiten‘ Position wie folgt zeigen:

enter image description here

+0

ich sagte, es ist nur ein Beispiel, wie es geht und genug für die Anpassung :) Bitte machen Sie den Rest, weil ich sicher bin, dass Sie wissen, wie man es macht – Ducky

+0

Ich kann den Pfeil nicht in der Nähe bearbeiten zu bearbeiten, und ich weiß nicht, wie Höhe einzustellen für vc, die ich als Storyboard verwende –

+0

Alter, es ist ganz anderes Problem. Wenn Sie erwarten, dass die Menschen Ihnen effizienter helfen, geben Sie weitere Einzelheiten an. – Ducky

2

Nicht sicher, was Sie hier fragen. So etwas wie dies funktionieren soll (dies ist in 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] 
    }