对于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继承(这对我来说真的很奇怪,我没有得到这个逻辑).
有没有办法设置它,以便共享popover出现指向栏按钮项?
谢谢,
您需要做的就是使用popover的barButtonItem属性.
所以在iPad上支持ActivityViewController或UIAlertController的正确代码:
popover.barButtonItem = self.navigationItem.rightBarButtonItem;
使用UIAlertController完全支持iPad的另一个例子(但与ActivityViewController的工作方式相同):
UIPopoverPresentationController *popover = alert.popoverPresentationController; if (popover) { popover.barButtonItem = self.navigationItem.rightBarButtonItem; popover.permittedArrowDirections = UIPopoverArrowDirectionUp; } [self presentViewController:alert animated:YES completion:nil];
Swift 4.2
if let popover = alert.popoverPresentationController { popover.barButtonItem = self.navigationItem.rightBarButtonItem popover.permittedArrowDirections = .up } self.present(alert, animated: true, completion: nil)