Я столкнулся с ситуацией, с которой сталкивается большинство людей при попытке представитьна iPad; это происходит сбой с:Ошибка UIActivityViewController на iPad с sourceView или barButtonItem
Terminating app due to uncaught exception 'NSGenericException', reason: 'UIPopoverPresentationController (<_UIAlertControllerActionSheetRegularPresentationController: 0x7fc4f2d87d00>) should have a non-nil sourceView or barButtonItem set before the presentation occurs.
Вот мой код:
- (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];
}
В моей viewDidLoad
, у меня есть:
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. Я просто пытаюсь активировать UIActivityViewController, например, лист IOS 8/9 Share. Я только что обновил вопрос, чтобы включить изображение из Safari на iPad - он идет прямо под этой кнопкой, но мой появляется слева, это странно. – amitsbajaj