I work on a project with ios5, Xcode 4, iPad.
I have a popover triggered from a standard button in my main view. I have setup the popover in the storyboard with a segue anchored to a standard button.
The UIPopoverControllerDelegate is my main view controller
@interface ViewController : UIViewController <UIPopoverControllerDelegate>
When I select a row in the popover I want to
- dismiss the popover and
- call the UIPopoverControllerDelegate method popoverControllerDidDismissPopover.
This is the code in the table view delegate of my popover:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
myKey = [myArray objectAtIndex:indexPath.row];
[popoverController dismissPopoverAnimated:YES];
// [popoverController.delegate popoverControllerDidDismissPopover];
Without last line, all works OK, row selection and dismission included.
But I am confused with the last line of code
[popoverController.delegate popoverControllerDidDismissPopover];
If this line is uncommented I get a compiler error: “No known instance method for selector popoverControllerDidDismissPopover”. The popover delegate is set in main view controller with this code:
- (void) prepareForSegue:(UIStoryboardPopoverSegue *) segue sender:(id) sender {
if ([[segue destinationViewController] isKindOfClass:[RGBViewController class]]) {
RGBViewController* viewController = (RGBViewController*)[segue destinationViewController];
UIStoryboardPopoverSegue* popoverSegue = (UIStoryboardPopoverSegue*)segue;
[viewController setPopoverController:[popoverSegue popoverController]];
[[popoverSegue popoverController] setDelegate:self];
}
}
Any help?
Thank you.
You are missing the attribute. The line you are looking for is:
Is there a particular reason you want to call this? I believe this should be called for you when you dismiss the popover.