2015-12-12 13 views
11

Dla aplikacji na iPhone'a/iPada, mam funkcję udostępniania, gdy ktoś kliknie na UIBarButtonItem.Zestaw UIActivityViewController sourceView to UIBarButtonItem

UIActivityViewController * activityVC = [[UIActivityViewController alloc] initWithActivityItems:shareItems applicationActivities:nil]; 

    [self presentViewController:activityVC animated:YES completion:nil]; 

Jednak dla iPada błędy tego kodu, ponieważ potrzebuję ustawić źródło dla parametru activityVC.

Muszę dodać ten kod, ale ustawić go na pozycję UIBarButtonItem.

activityVC.popoverPresentationController.sourceView = SomeUIBarButtonItem; 

Ale to nie działa, ponieważ UIBarButtonItem nie dziedziczy z UIView (co jest bardzo dziwne dla mnie, a ja nie rozumiem tej logiki).

Czy jest jakiś sposób ustawienia go tak, aby popover akcji wskazywał element przycisku paska?

Dzięki,

+10

Czy spojrzałeś na właściwość 'barButtonItem' z' UIPopoverPresentationController'? – rmaddy

+0

Och, zdałem sobie sprawę, że był barButtonItem i działa zgodnie z oczekiwaniami! Dzięki za pomoc! –

Odpowiedz

18

Wszystko, co musisz zrobić, to użyć własności barButtonItem w popover użytkownika.

Więc właściwy kod do obsługi ActivityViewController lub UIAlertController na iPadach:

popover.barButtonItem = self.navigationItem.rightBarButtonItem; 

Innym przykładem pełnego poparcia dla iPadów, z UIAlertController (ale działa tak samo z ActivityViewController):

UIPopoverPresentationController *popover = alert.popoverPresentationController; 
if (popover) 
{ 
    popover.barButtonItem = self.navigationItem.rightBarButtonItem; 
    popover.permittedArrowDirections = UIPopoverArrowDirectionUp; 
} 

[self presentViewController:alert animated:YES completion:nil]; 
Powiązane problemy