Hi all,
today a snippet to open in a view a popover controller. It’s the view with the arrow (do you know?)
Like this, take a look here:
*** Terminating app due to uncaught exception ‘NSInvalidArgumentException’, reason:
‘-[UIPopoverController initWithContentViewController:] called when not running under UIUserInterfaceIdiomPad.’
right?
After this, add getter/setter for
[code lang=”java” autolinks=”false” collapse=”false” firstline=”1″ gutter=”true” htmlscript=”false” light=”false” padlinenumbers=”false” smarttabs=”true” tabsize=”4″ toolbar=”false”]UIPopoverController *popoverController;
[…]
@property(nonatomic, retain) UIPopoverController *popoverController;[/code]
Add this code in your button action:
[code lang=”java” autolinks=”false” collapse=”false” firstline=”1″ gutter=”true” htmlscript=”false” light=”false” padlinenumbers=”false” smarttabs=”true” tabsize=”4″ toolbar=”false”]- (IBAction) yourAction {
UIViewController* popoverContent = [[UIViewController alloc] init];
UIView* popoverView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 200, 150)];
popoverView.backgroundColor = [UIColor whiteColor];
popoverContent.modalInPopover = YES;
popoverContent.modalPresentationStyle = UIModalPresentationFormSheet;
UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button setFrame:CGRectMake(20, 20, 160, 30)];
[button setTitle:@"Close" forState:UIControlStateNormal];
[button addTarget:self action:@selector(closePopover) forControlEvents:UIControlEventTouchUpInside];
[popoverView addSubview:button];
UITextView *cccp = [[UITextView alloc] initWithFrame:CGRectMake(10, 50, 180, 120)];
cccp.userInteractionEnabled = NO;
[cccp setText:@"Write your text here\n\nwww.albertopasca.it"];
cccp.textAlignment = UITextAlignmentCenter;
[popoverView addSubview:cccp];
popoverContent.view = popoverView;
popoverContent.contentSizeForViewInPopover = CGSizeMake(200, 150);
self.popoverController =
[[[UIPopoverController alloc] initWithContentViewController:popoverContent] autorelease];
[self.popoverController presentPopoverFromRect:copy.frame
inView:self.view
permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
[popoverView release];
[popoverContent release];
[cccp release];
}[/code]
…and finally close the UIPopoverController on touch:
[code lang=”java” autolinks=”false” collapse=”false” firstline=”1″ gutter=”true” htmlscript=”false” light=”false” padlinenumbers=”false” smarttabs=”true” tabsize=”4″ toolbar=”false”]- (void) closePopover {
[self.popoverController dismissPopoverAnimated:YES];
}[/code]
it’s all!
Easy as ever!
Rif: albertopasca.it