UIPopoverController and Modal View Controllers(13)

// Create a new popover controller that will display the imagePicker imagePickerPopover = [[UIPopoverController alloc]

initWithContentViewController:imagePicker];

[imagePickerPopover setDelegate:self];

// Display the popover controller; sender
// is the camera bar button item
[imagePickerPopover presentPopoverFromBarButtonItem:sender 
permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; 

To dismiss a modally-presented view controller, you must send the message dismissViewControllerAnimated:completion: to the view controller that presented it. You’ve done this before with UIImagePickerController – the DetailViewController presented it, and when the image picker told the DetailViewController it was done, the DetailViewController dismissed it.

Now, we have a slightly different situation. When a new item is created, the ItemsViewController presents the DetailViewController modally. The DetailViewController has two buttons on its navigationItem that will dismiss it when tapped: Cancel and Done. There is a problem here: the action messages for these buttons are sent to the DetailViewController, but it is the responsibility of the ItemsViewController to do the dismissing. The DetailViewController needs a way to tell the view controller that presented it, “Hey, I’m done, you can dismiss me now.”

Fortunately, every UIViewController has a presentingViewController property that points to the view controller that presented it. The DetailViewController will grab a pointer to its presentingViewController and send it the message dismissViewControllerAnimated:completion:.

Implement the action method for the Save button in DetailViewController.m

[[self presentingViewController] dismissViewControllerAnimated:YES completion:nil]; 

There are two built-in properties for managing the relationship between presenter and presentee. A modally-presented view controller’s presentingViewController will point back to the view controller that presented it, while the presenter will keep a pointer to the presentee in its presentedViewController property 

Presentation context 

(不是很理解)

参考信息:https://developer.apple.com/library/ios/featuredarticles/ViewControllerPGforiPhoneOS/ModalViewControllers/ModalViewControllers.html

page184

原文地址:https://www.cnblogs.com/zhangjl/p/3639302.html