对于iPhone/iPad应用程序,当有人单击UIBarButtonItem时,我具有共享功能。
UIActivityViewController * activityVC = [[UIActivityViewController alloc] initWithActivityItems:shareItems applicationActivities:nil];
[self presentViewController:activityVC animated:YES completion:nil];
但是,对于iPad,此代码错误是因为我需要为activityVC设置sourceView。
因此,我需要添加此代码,但将其设置为UIBarButtonItem的位置。
activityVC.popoverPresentationController.sourceView = SomeUIBarButtonItem;
但这是行不通的,因为UIBarButtonItem不继承自UIView(这对我来说真的很奇怪,我没有得到这个逻辑)。
有什么方法可以设置它,以使共享弹出窗口指向条形按钮项目?
谢谢,
最佳答案
您需要做的就是使用弹出窗口的barButtonItem属性。
因此,一个适当的代码可以在iPad上支持ActivityViewController或UIAlertController:
popover.barButtonItem = self.navigationItem.rightBarButtonItem;
使用UIAlertController(但与ActivityViewController完全相同)完全支持iPad的另一个示例:
UIPopoverPresentationController *popover = alert.popoverPresentationController;
if (popover)
{
popover.barButtonItem = self.navigationItem.rightBarButtonItem;
popover.permittedArrowDirections = UIPopoverArrowDirectionUp;
}
[self presentViewController:alert animated:YES completion:nil];
迅捷4.2
if let popover = alert.popoverPresentationController {
popover.barButtonItem = self.navigationItem.rightBarButtonItem
popover.permittedArrowDirections = .up
}
self.present(alert, animated: true, completion: nil)
关于ios - UIActivityViewController将sourceView设置为UIBarButtonItem,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34244117/