iPadにUIActivityViewController
を表示しようとするとほとんどの人が直面するような状況に遭遇しました。ここに私のコードですUIActivityViewControllerがsourceViewまたはbarButtonItemを使用してiPadでクラッシュする
Terminating app due to uncaught exception 'NSGenericException', reason: 'UIPopoverPresentationController (<_UIAlertControllerActionSheetRegularPresentationController: 0x7fc4f2d87d00>) should have a non-nil sourceView or barButtonItem set before the presentation occurs.
:私のviewDidLoad
で
- (void)shareLeaflet
{
NSString *forwardedString = [[NSString alloc] initWithFormat:@"Check out this leaflet\n\n %@ \n\nself.theURLToShare];
UIActivityViewController *activityViewController = nil;
if (IDIOM == IPAD)
{
NSLog(@"iPad");
activityViewController.popoverPresentationController.sourceView = self.view;
// activityViewController.popoverPresentationController.sourceRect = self.frame;
[self presentViewController:activityViewController
animated:YES
completion:nil];
}
else
{
NSLog(@"iPhone");
activityViewController = [[UIActivityViewController alloc] initWithActivityItems:[NSArray arrayWithObjects:forwardedString, nil] applicationActivities:nil];
[self presentViewController:activityViewController animated:YES completion:nil];
}
、私がしている:
UIBarButtonItem *composeButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAction target:self action:@selector(shareLeaflet)];
self.navigationItem.rightBarButtonItem = composeButton;
}
このビューには、いくつかの画像を展示されUIPageViewController
あるとクラッシュしますユーザーが共有ボタンを押すと、私はiOS 8スタイルの共有シートがポップアップすることを期待しています。これはまさにiPhoneで起こることですが、iPadではクラッシュし続けます。それはスタックオーバーフローにつながったが、私のために質問(crash on showing UIPopOverPresentationController、iOS Crash: Terminating app due to uncaught exception reason: UIPopoverPresentationController should have a non-nil sourceView、UIWebViewTerminating app due to UIPopoverPresentationController、ios8 iPad uiwebview crashes while displaying popover when user taps drop down list HTML select tagなど)のどれも働かない。
私はそこにすべてのソリューションを試しましたが、私はこれで必要なものをかなり得ています。
これは私が達成しようとしているものです:
こんにちは@JDx - これは簡単でした!簡単な質問で申し訳ありませんが、それは魅力的に機能しました!ありがとうございました!しかし、ちょうどフォローアップの質問をする - 私はポップアップから来る側を制御することはできますか?今は、画面の左上から来ていますが、実際にはボタンは右上にあります。 – amitsbajaj
問題ありません!私はあなたができるとは思わない、多分UiPopoverControllerを代わりに使うことができるだろうか? – JDx
ありがとうJD - iOS 8/9共有シートのように、UIActivityViewControllerをアクティブにしようとしています。私はちょうどiPadのSafariからの画像を含むように質問を更新しました - それはそのボタンの下にまっすぐに来ますが、私は奇妙な左に表示されます – amitsbajaj