Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to do "actionSheet showFromRect" in iOS 8?

In iOS 7, I show actionSheet by "showFromRect":

[actionSheet showFromRect:rect inView:view animated:YES];

But in iOS 8, this doesn't work. They they replace the implementation and suggest us using UIAlertController. Then how do I show this actionSheet like a popover?

like image 763
allenlinli Avatar asked Dec 12 '22 04:12

allenlinli


1 Answers

Using UIAlertController you can access the popoverPresentationController property to set the sourceView (aka inView) and sourceRect (aka fromRect). This gives the same appearance as the previous showFromRect:inView:

UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"Title" message:@"message" preferredStyle:UIAlertControllerStyleActionSheet];

// Set the sourceView.
alert.popoverPresentationController.sourceView = self.mySubView;

// Set the sourceRect.
alert.popoverPresentationController.sourceRect = CGRectMake(50, 50, 10, 10);

// Create and add an Action.
UIAlertAction *anAction = [UIAlertAction actionWithTitle:@"Action Title" style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) {
NSLog(@"Action Pressed");
}];

[alert addAction:anAction];

// Show the Alert.
[self presentViewController:alert animated:YES completion:nil];
like image 58
tagy22 Avatar answered Feb 02 '23 03:02

tagy22