2016-03-22 20 views
0

Ich versuche 3D Touch Peek und Pop in meinem Swift-Code zu implementieren. Wenn der Benutzer die Peek-Ansicht tiefer drückt, wird ein Array mit Vorschauaktionen angezeigt (Teilen, Aktualisieren, Löschen).3D Peek und POP in swift

Was ich brauche ist, wenn der Benutzer wählen Update Aktion wird UpdateView Controller, aber es stürzt weiter !!

Hier ist mein Code:

HomePeakViewController.swift

let item3 = UIPreviewAction(title: "Update", style: .Default) { (action:UIPreviewAction, vc:UIViewController) -> Void in 
     print("Update") 

     let nb:BookAppointmentViewController = BookAppointmentViewController(nibName: "BookAppointmentViewController", bundle: nil) 

     let root = UIApplication.sharedApplication().keyWindow?.rootViewController 
     root?.presentViewController(nb, animated: true, completion: nil) 

POP-Methode in HomeViewController.swift

func previewingContext(previewingContext: UIViewControllerPreviewing, commitViewController viewControllerToCommit: UIViewController) { 

     let Homepeak = HomePeakViewController() 
     showViewController(Homepeak, sender: self) 

    } 

ich diesen Code auch versucht Bildschirm zu aktualisieren zu bewegen, aber es gibt mir (fataler Fehler: unerwartet gefunden, Null beim Entpacken eines optionalen Werts).

var top = UIApplication.sharedApplication().keyWindow?.rootViewController 

      let test = AppointmentDetailsViewController() 
      top!.presentViewController(test, animated: true, completion: {}) 

Ihr Aufwand wird sehr geschätzt.

Antwort

0

Vielleicht müssen Sie mit den Delegationen beschäftigen:

Zum Beispiel:

extension MainViewController: UIViewControllerPreviewingDelegate { 

    func previewingContext(previewingContext: UIViewControllerPreviewing, viewControllerForLocation location: CGPoint) -> UIViewController? { 
     if #available(iOS 9.0, *) { 
      previewingContext.sourceRect = myButton!.bounds //optional 
     } 

     let homePeakViewController = UIStoryboard.homePeakViewController() 
     homePeakViewController.delegate = self 

     return homePeakViewController 
    } 


    func previewingContext(previewingContext: UIViewControllerPreviewing, commitViewController viewControllerToCommit: UIViewController) { 
     let balanceViewController = viewControllerToCommit as! HomePeakViewController 
     navigationController?.pushViewController(balanceViewController, animated: true) 
    } 

} 

extension MainViewController: HomePeakViewControllerDelegate { 

    func homePeakViewControllerUpadateActionTapped() { 
     let bookAppointmentViewController = let nb:BookAppointmentViewController = BookAppointmentViewController(nibName: "BookAppointmentViewController", bundle: nil) 
     navigationController?.pushViewController(bookAppointmentViewController, animated: true) //present as you want 
    } 

} 

protocol HomePeakViewControllerDelegate { 
    func homePeakViewControllerUpadateActionTapped() 
} 

class HomePeakViewController { 

    var delegate: HomePeakViewControllerDelegate? 

    @available(iOS 9.0, *) 
    override func previewActionItems() -> [UIPreviewActionItem] { 
    let item3 = UIPreviewAction(title: "Update", style: .Default) { (action:UIPreviewAction, vc:UIViewController) -> Void in 
     delegate?.homePeakViewControllerUpadateActionTapped() 
    } 

    return [item3] 
    } 

}