2011-10-12 7 views
5

Attualmente si verificano problemi con visualizzazioni modali e popover. Potrebbe essere lo stesso problema, ma non ne sono sicuro.Impossibile modificare la presentazione e gli stili di transizione delle visualizzazioni modali in Xcode (iPad)

Il problema riscontrato con le visualizzazioni modali è che non è possibile modificare l'animazione o lo stile di transizione. Per esempio, scrivo

self.modalPresentationStyle = UIModalPresentationPageSheet; 
self.modalTransitionStyle = UIModalTransitionStyleCrossDissolve; 
[self presentModalViewController:IpModal animated:YES]; 

ma la vista modale appare ancora a schermo intero con il suo stile di transizione originale.

Inoltre, il problema che ho riscontrato con i popover è piuttosto simile. Anche se chiamo il metodo respinge Pover: animato: con "NO" come parametro, la transizione è ancora animata.

Grazie in anticipo.

risposta

1

Forse potresti provare ad utilizzare uno di questi due metodi per presentare il controller popover, a seconda di dove vuoi che venga visualizzato, piuttosto che di presentModalViewController:animated:.

– presentPopoverFromRect:inView:permittedArrowDirections:animated: 
– presentPopoverFromBarButtonItem:permittedArrowDirections:animated: 
24

modalPresentationStyle e modalTransitionStyle applicano al controller della vista che deve essere presentata modale, non il controllore facendo la presentazione.

Il codice dovrebbe essere

IpModal.modalPresentationStyle = UIModalPresentationPageSheet; 
IpModal.modalTransitionStyle = UIModalTransitionStyleCrossDissolve; 
[self presentModalViewController:IpModal animated:YES]; 
+0

+1 Questo funziona anche quando si imposta su viewcontroller di destinazione lo stile per respingere indietro impostandoli su sé stesso. Ad esempio il caso dell'anteprima del viewcontroller tramite force touch, l'impostazione della transizione del respingimento sembra essere flessibile eseguendo sul lato di destinazione. – haxpor

4

Ho fatto questo in segue personalizzato.

UIViewController* src = self.sourceViewController; 
UIViewController* dst = self.destinationViewController; 

src.modalPresentationStyle = UIModalTransitionStyleFlipHorizontal; 
dst.modalPresentationStyle = UIModalTransitionStyleFlipHorizontal; 
[src presentModalViewController:dst animated:YES]; 
2
#import yourViewController.m //already present 
#import destinationVieController.m //to be added by programmer 

//custom function to call destination controller 

-(void)callDestinationViewController{ 

    destinationViewController *dest = [[destinationViewController alloc] initWithNibName:@"destinationViewController" bundle:nil]; 

    dest.modalTransitionStyle = UIModalTransitionStyleCrossDissolve; 
    [self presentModalViewController:dest animated:YES]; 

    } 

//custom function can be called on event fire or action call 

Spero che questo aiuti!