I am currently testing my app with Xcode 6 (Beta 6). UIActivityViewController works fine with iPhone devices and simulators but crashes with iPad simulators and devices (iOS 8) with following logs
Terminating app due to uncaught exception 'NSGenericException',
reason: 'UIPopoverPresentationController
(<_UIAlertControllerActionSheetRegularPresentationController: 0x7fc7a874bd90>)
should have a non-nil sourceView or barButtonItem set before the presentation occurs.
I am using following code for iPhone and iPad for both iOS 7 as well as iOS 8
NSData *myData = [NSData dataWithContentsOfFile:_filename];
NSArray *activityItems = [NSArray arrayWithObjects:myData, nil];
UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:nil applicationActivities:nil];
activityViewController.excludedActivityTypes = @[UIActivityTypeCopyToPasteboard];
[self presentViewController:activityViewController animated:YES completion:nil];
I am getting a similar crash in of one my other app as well. Can you please guide me ? has anything changed with UIActivityViewController in iOS 8? I checked but i did not find anything on this
I found this solution Firstly, your view controller that's presenting the popover should implement the
<UIPopoverPresentationControllerDelegate>
protocol.Next, you'll need to set the
popoverPresentationController
's delegate.Add these functions:
Same problem is come to my project then i found the solution that to open the UIActivityViewController in iPad we have to use UIPopoverController
Here is a code to use it in iPhone and iPad both
For swift 4.2
}
How to use : Call this function in your viewController
I tried the next code and it works:
first put a bar button item in your View Controller then create an IBOutlet:
@property(weak,nonatomic)IBOutlet UIBarButtonItem *barButtonItem;
next in the .m file:
yourUIActivityViewController.popoverPresentationController.barButtonItem = self.barButtonItem;
Solution using Xamarin.iOS.
In my example I'm doing a screen capture, producing an image, and allowing the user to share the image. The pop up on the iPad is placed about in the middle of the screen.