How to dismiss UIPopover from a button in the Popover

前端 未结 3 1997
花落未央
花落未央 2020-12-08 11:59

I am trying to dismiss a UIPopoverViewControler from a button in the Popover. In addition I want it to transfer the data back to the main view. I have it working for a modal

3条回答
  •  情话喂你
    2020-12-08 12:43

    Idea is simple. YourViewController - it's viewController of UIPopoverController. MainViewController - controller where you create UIPopoverController

    1. Declare protocol in YourViewController with dismiss method
    2. Declare property of type id in YourViewController
    3. Declare support of DismissDelegateProtocol in MainViewController
    4. Implement dismiss method of DismissDelegateProtocol in MainViewController
    5. When you create YourViewController in MainViewController set delegate property (yourViewController.delegate = self;)
    6. In action, that response to button touching call delegate method: [self.delegate dismissWithData:dataToTransfer];

    In code it should be like this:

    In MainViewController.h:

    #import "YourViewController.h"
    @class MainViewController: UIViewController < DismissPopoverDelegate >
    

    In MainViewController.m:

    - (void) dismissPopover:(NSObject *)yourDataToTransfer
    { /* Dismiss you popover here and process data */ }
    
    ...
    // Some method, when you create popover
    {
        YourViewController *vc = ... ;
        vc.delegate = self; // this delegate property should be declared as assign
    }
    

    In YourViewController.h:

    @protocol DismissPopoverDelegate
    - (void) dismissPopover:(NSObject *)yourDataToTransfer;
    @end
    
    @class YourViewController : UIViewController
    {
        id delegate;
    }
    
    @property (nonatomic, assign) id delegate;
    

    In YourViewController.m:

    - (void) methodWhenYouWantToDismissPopover
    {
        [self.delegate dismissPopover:data];
    }
    

提交回复
热议问题