在iOS 8.0中,Apple推出了 UIAlertController 替换 UIActionSheet 。不幸的是,Apple没有添加任何有关如何呈现它的信息。我在hayaGeek的博客上发现了一个关于它的条目,但它似乎无法工作iPad兼容。视图完全错位:
With iOS 8.0, Apple introduced UIAlertController to replace UIActionSheet. Unfortunately, Apple didn't add any information on how to present it. I found an entry about it on hayaGeek's blog, however, it doesn't seem to work on iPad. The view is totally misplaced:
错位:
正确:
我使用以下代码在界面上显示它:
I use the following code to show it on the interface:
let alert = UIAlertController() // setting buttons self.presentModalViewController(alert, animated: true)有没有其他方法可以为iPad添加它?或者苹果只是忘了iPad,还是没有实现?
Is there another way to add it for iPad? Or did Apple just forget the iPad, or not implemented, yet?
推荐答案你可以提出 UIAlertController 来自popover,使用 UIPopoverPresentationController 。
You can present a UIAlertController from a popover by using UIPopoverPresentationController.
UIViewController *self; // code assumes you're in a view controller UIButton *button; // the button you want to show the popup sheet from UIAlertController *alertController; UIAlertAction *destroyAction; UIAlertAction *otherAction; alertController = [UIAlertController alertControllerWithTitle:nil message:nil preferredStyle:UIAlertControllerStyleActionSheet]; destroyAction = [UIAlertAction actionWithTitle:@"Remove All Data" style:UIAlertActionStyleDestructive handler:^(UIAlertAction *action) { // do destructive stuff here }]; otherAction = [UIAlertAction actionWithTitle:@"Blah" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) { // do something here }]; // note: you can control the order buttons are shown, unlike UIActionSheet [alertController addAction:destroyAction]; [alertController addAction:otherAction]; [alertController setModalPresentationStyle:UIModalPresentationPopover]; UIPopoverPresentationController *popPresenter = [alertController popoverPresentationController]; popPresenter.sourceView = button; popPresenter.sourceRect = button.bounds; [self presentViewController:alertController animated:YES completion:nil];更多推荐
使用iOS 8在iPad上正确呈现UIAlertController
发布评论