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