2015-12-12 18 views
11

Per un'applicazione iPhone/iPad, ho la funzionalità da condividere quando qualcuno fa clic su UIBarButtonItem.UIActivityViewController set sourceView a UIBarButtonItem

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

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

per iPad Tuttavia, questo gli errori di codice perché ho bisogno di impostare la sourceView per l'activityVC.

Quindi ho bisogno di aggiungere questo codice, ma impostarlo nella posizione di UIBarButtonItem.

activityVC.popoverPresentationController.sourceView = SomeUIBarButtonItem; 

Ma questo non funziona in quanto UIBarButtonItem non eredita da UIView (che è davvero strano per me e non ho ricevuto questa logica).

C'è un modo per impostarlo in modo che venga visualizzato il popover della condivisione che punta la voce del pulsante della barra?

Grazie,

+10

Hai esaminato la proprietà 'barButtonItem' di' UIPopoverPresentationController'? – rmaddy

+0

Oh, ho capito che c'era barButtonItem, e funziona come previsto! Grazie per l'aiuto! –

risposta

18

Tutto quello che dovete fare è utilizzare la proprietà barButtonItem del popover.

Quindi un codice appropriato per supportare ActivityViewController o UIAlertController su iPad:

popover.barButtonItem = self.navigationItem.rightBarButtonItem; 

Un altro esempio per un pieno supporto per iPad, con UIAlertController (ma funziona lo stesso con ActivityViewController):

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

[self presentViewController:alert animated:YES completion:nil]; 
Problemi correlati