UIPopoverController(Basics)

This is sample of UIPopoverController
UIPopoverController is popup-like dialog.
This is valid on iPad UI. If you use iPhone UI, exception will happen.

Sample

This is just code UI.

PopupViewSampleViewController.h

@interface PopupViewSampleViewController : UIViewController<UIPopoverControllerDelegate>

@end

Please implements UIPopoverControllerDelegate.

PopupViewSampleViewController.m

@interface PopupViewSampleViewController ()
@property (nonatomic) UIPopoverController *popup;
@end

@implementation PopupViewSampleViewController

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
	[self.view setBackgroundColor:[UIColor whiteColor]];
    UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(100, 100, 150, 50)];
    [button setBackgroundColor:[UIColor blueColor]];
    [button setTitle:@"OpenPop" forState:UIControlStateNormal];
    [button addTarget:self action:@selector(openPop:) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:button];
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

#pragma mark - UI Event
-(void)openPop:(id)sender {
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
        UIViewController *controller = [[UIViewController alloc] init];
        [controller.view setBackgroundColor:[UIColor grayColor]];
        controller.view.frame = CGRectMake(100, 100, 150, 50);
        self.popup = [[UIPopoverController alloc] initWithContentViewController:controller];
        self.popup.popoverContentSize = CGSizeMake(150, 100);
        
        self.popup.delegate = self;
        [self.popup presentPopoverFromRect:CGRectMake(100, 100, 150, 50) inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
        // UIPopoverArrowDirectionAny
    }
}

#pragma mark - Popover
-(void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController {
    self.popup = nil;
}
@end

Arrow Direction

This popup has arrow. We can select some types of arrow.

Type
UIPopoverArrowDirectionAny
UIPopoverArrowDirectionDown
UIPopoverArrowDirectionLeft
UIPopoverArrowDirectionUnknown
UIPopoverArrowDirectionUp

Result

This is only for iPad, in iPhone, no event has happened.
UIPopoverController