Popover view for iPhone using XCode 5
I figured out a way to get popover to work on iPhone and iPad programmatically !
-
Create a category to make popover available on iPhone (more details here)
//UIPopover+Iphone.h @interface UIPopoverController (overrides) + (BOOL)_popoversDisabled; @end //UIPopover+Iphone.m @implementation UIPopoverController (overrides) + (BOOL)_popoversDisabled { return NO; } @end Create the button which will show the popover and implement the method it calls
ExampleUIViewController.h
@interface ExampleViewController : UIViewController <UIPopoverControllerDelegate>
@property (strong, nonatomic) UIButton *detailButton;
@property (nonatomic, retain) IBOutlet UIPopoverController *poc;
UIPopoverController poc has to be held in an instance variable, more details here.
ExampleUIViewController.m
- (void)viewDidLoad {
_detailButton = [UIButton buttonWithType:UIButtonTypeCustom];
[_detailButton addTarget:self
action:@selector(showPop:)
forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:_detailButton];
}
-(void)showPop:(UIButton *)button {
UIViewController *detailsViewController = [[DetailsViewController alloc] initWithNibName:@"DetailsViewController" bundle:nil];
self.poc = [[UIPopoverController alloc] initWithContentViewController:detailsViewController];
[self.poc setDelegate:self];
[self.poc presentPopoverFromRect:_detailButton.frame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionLeft animated:YES];
}
- Create the UIViewController that will contain what's displayed inside the popover (called DetailsViewController in the example)
Simply create it in your project by a right click -> New File -> Objective c class -> UIViewController and tick the box "With XIB".
Then a popover will appear right next to the button when tapped.
Tested OK on iOs5 and above.
Sèb
Updated on June 16, 2022Comments
-
Sèb 6 monthsI wanted to reuse the popover for iPhone described in this video which is exactly what I need.
The problem is that I couldn't bind a
UIViewControllerproperty to the popover'sUIViewControllerlike in the video.One difference with the video is that it has been made using XCode 4.2 and I'm using XCode 5.
So the question is: How to make a popover for iPhone like in the video on XCode 5?
-
chandru about 9 yearshow to add any object to this pop over view -
Sèb about 9 yearsThe content of the popover, in my example, is DetailsViewController. So to add anything into the pop over view, add it to your DetailsViewController. -
chandru about 9 yearsYa, I got, I used this, [myViewController.view addSubviews:objects]; -
Sèb over 8 yearsIn stackoverflow.com/questions/18205903/… it has been accepted by Apple. As for myself I didn’t submit my app to the App Store yet. -
Sèb about 8 yearsI tested this popover feature on iPhone 4s iOs8.1 simulator and I got a black screen blocking the app :( apparently this code is not working on iOs8 and probably all versions above... -
Vinayaka Karjigi over 7 yearsHey Seb, I am also seeing black screen on iOS 8.1 simulator, did you resolve the issue? -
Sèb over 7 yearsI ended up using an other solution : I made the view appear above the others and set some animations (fading and translation) so it looks nice when the view comes to the screen.