2016-03-22 5 views
0

Я пытаюсь реализовать 3D Touch Peek и Pop в моем быстром коде. Когда пользователь будет нажимать глубже на вид заглядывания, появится массив действий предварительного просмотра (Share, Update, Delete).3D Peek и POP в быстром

Что мне нужно, когда пользователь выбирает действие «Обновить», будет перемещаться в контроллер UpdateView, но он продолжает сбой!

Вот мой код:

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 в HomeViewController.swift

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

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

    } 

Я попробовал этот код, а также, чтобы перейти к экрану Update, но (фатальная ошибка: неожиданно обнаружена нуль при развертывании необязательного значения).

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

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

Ваши усилия очень ценятся.

ответ

0

Может быть, вам придется иметь дело с делегациями:

Например:

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

} 
Смежные вопросы