Projects/PreviewUsingDelegate/PreviewUsingDelegate/MasterViewController+UIViewControllerPreviewing.swift
/*  | 
Copyright (C) 2016 Apple Inc. All Rights Reserved.  | 
See LICENSE.txt for this sample’s licensing information  | 
Abstract:  | 
Demonstrates the implementation of the previewing delegate's "Peek" and "Pop" callbacks.  | 
*/  | 
import UIKit  | 
extension MasterViewController: UIViewControllerPreviewingDelegate { | 
// MARK: UIViewControllerPreviewingDelegate  | 
/// Create a previewing view controller to be shown at "Peek".  | 
    func previewingContext(_ previewingContext: UIViewControllerPreviewing, viewControllerForLocation location: CGPoint) -> UIViewController? { | 
// Obtain the index path and the cell that was pressed.  | 
guard let indexPath = tableView.indexPathForRow(at: location),  | 
                  let cell = tableView.cellForRow(at: indexPath) else { return nil } | 
// Create a detail view controller and set its properties.  | 
        guard let detailViewController = storyboard?.instantiateViewController(withIdentifier: "DetailViewController") as? DetailViewController else { return nil } | 
let previewDetail = sampleData[(indexPath as NSIndexPath).row]  | 
detailViewController.sampleTitle = previewDetail.title  | 
/*  | 
Set the height of the preview by setting the preferred content size of the detail view controller.  | 
Width should be zero, because it's not used in portrait.  | 
*/  | 
detailViewController.preferredContentSize = CGSize(width: 0.0, height: previewDetail.preferredHeight)  | 
// Set the source rect to the cell frame, so surrounding elements are blurred.  | 
previewingContext.sourceRect = cell.frame  | 
return detailViewController  | 
}  | 
/// Present the view controller for the "Pop" action.  | 
    func previewingContext(_ previewingContext: UIViewControllerPreviewing, commit viewControllerToCommit: UIViewController) { | 
// Reuse the "Peek" view controller for presentation.  | 
show(viewControllerToCommit, sender: self)  | 
}  | 
}  | 
Copyright © 2016 Apple Inc. All Rights Reserved. Terms of Use | Privacy Policy | Updated: 2016-09-13