对于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/

10-14 21:49