2010-09-08 11 views
5

Ho un UIPopoverController contenente un UITableView. Il popover viene ridimensionato nella funzione -viewDidAppear del controller di visualizzazione per adattarsi al contenuto della tabella. Mentre il popover si ridimensiona correttamente, la sua freccia di solito non punta più all'originale CGRect. Esiste un modo per forzare il popover a riposizionarsi dopo un ridimensionamento in modo che la sua freccia punti verso il suo obiettivo designato?Regolare la posizione di UIPopoverController dopo il ridimensionamento

EDIT: Non è possibile impostare la dimensione del popover nel -viewDidLoad dal momento che la visualizzazione della tabella non carica i suoi dati fino -viewDidAppear si chiama, e di conseguenza non so che cosa dimensioni del popover dovrebbe essere fino a quel momento . Inoltre, ridimensiono il popover quando si fa clic su una delle celle di visualizzazione tabella per visualizzare un'altra vista e questo si traduce anche nella freccia che non punta più alla destinazione desiderata.

+0

È possibile impostare la dimensione del popover prima che la tabella venga caricata. Le due cose sono completamente separate. Quello che stai facendo è impostare la dimensione della cornice incapsulante; se la dimensione del contenuto di 'UITableView' è più lunga, otterrai le barre di scorrimento, proprio come succede quando si carica una vista tabella su un iPhone e il contenuto è più alto di 480 pixel. –

+0

@Shaggy Frog: Voglio evitare le barre di scorrimento quando possibile. – titaniumdecoy

+0

Ancora, fraintendimenti. Universalmente, se il contenuto di un 'UITableView' è più alto del suo frame, mostrerà le scrollbar. Questo è un argomento completamente separato da quello che stai chiedendo, che è la regolazione della cornice di una vista popover, che ho spiegato come fare. –

risposta

6

Penso che questo potrebbe essere il modo sbagliato per farlo, dal momento che si deve ri-fare il comportamento integrato che posiziona la freccia per cominciare.

Non ridimensionare il contenuto popover in viewDidAppear. Ho impostato la proprietà contentSizeForViewInPopover nel controller vista viewDidLoad metodo, ad esempio:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    self.contentSizeForViewInPopover = CGSizeMake(320, 155); // sized for a 3-row UITableView 
} 

(avvertimento rapido: se si sta sviluppando un'applicazione universale, questo codice causerà un incidente in fase di esecuzione su dispositivi che eseguono 3.1.x e di seguito.)

È inoltre possibile impostare le dimensioni del contenuto per il controller popover prima di presentarlo, il che dovrebbe risolvere il problema. Controlla la proprietà popoverContentSize.

+0

Grazie, ma non funzionerà nella mia situazione; guarda la mia domanda aggiornata – titaniumdecoy

+1

@titaniumdecoy funzionerà, vedere la mia risposta –

+0

@ shaggy rog popovercontentsize è una buona idea 'self.popoverController.popoverContentSize = CGSizeMake (320, 300);' farà da lavoro.grazie uomo –

3

Secondo this answer, è possibile chiamare di nuovo presentPopoverFromRect:inView: sul popover e riposizionare la freccia. Non l'ho provato da solo.

+2

Questo è documentato in Domande e risposte tecniche QA1694: http://developer.apple.com/iphone/library/qa/qa2010/qa1694.html –

Problemi correlati