Domanda

Sto tentando di caricare una vista slide-in temporanea da un altro controller di visualizzazione. I controller di visualizzazione della mia applicazione sono strutturati:

Application > Tab Bar Controller > TabBarItem > View Controller

In questo controller di visualizzazione, ho un pulsante che attiva correttamente un metodo per caricare la visualizzazione temporanea:

- (IBAction)displayTimePickerViewForDayButton:(id)sender {

    NSLog(@"displayTimePickerViewForDayButton method entered.");

    // create the selector view controller and become the delegate
    WOTimePickerViewController *tpvc = [[WOTimePickerViewController alloc] initWithNibName:@"WOTimePickerView" bundle:nil];
    tpvc.delegate = self;
    tpvc.modalTransitionStyle = UIModalTransitionStyleCoverVertical;

    [self presentModalViewController:tpvc animated:YES];
    [tpvc release];
}

Ho verificato che il mio WOTimePickerViewController sta tornando correttamente dal metodo init ma la vista non entra mai nel suo metodo viewDidLoad.

Quindi, se guardo la vista in IB, sembra che sia connessa alla "vista" di vc proprietà. Quando eseguo la vista nel simulatore (da IB) viene visualizzato correttamente.

Quando eseguo l'app da XCODE, posso navigare verso la vista, fare clic sul mio pulsante e appare una schermata bianca vuota (nota che questo non è lo sfondo bianco della vista che dovrebbe caricare).

È stato utile?

Soluzione

Dovresti farlo in questo modo ..

WOTimePickerViewController *tpvc = [[WOTimePickerViewController alloc] initWithNibName:@"WOTimePickerView" bundle:nil];
    tpvc.delegate = self;
UINavigationController *navCntrlr = [[UINavigationController alloc] initWithRootViewController:tpvc];
    navCntrlr.modalTransitionStyle = UIModalTransitionStyleCoverVertical;

    [self.navigationController presentModalViewController:tpvc animated:YES];
    [tpvc release];

Ma la cosa importante che ti manca è non farlo nel modo giusto.

dovresti farlo come:

[self.navigationController presentModalViewController:tpvc animated:YES];

e quando vuoi chiudere il controller modalView dovresti farlo come:

[self.navigationController dismissModalViewControllerAnimated:YES];

Altri suggerimenti

Penso che modalTransitionStyle del controller di visualizzazione si applichi alle visualizzazioni modali mostrate da quel controller di visualizzazione. Pertanto, se si desidera utilizzare la transizione UIModalTransitionStyleCoverVertical per visualizzare il controller modale, è necessario impostare la proprietà modalTransitionStyle sul controller della vista padre (self), non su quello nuovo.

Non ho alcuna esperienza sull'uso di modalTransitionStyle, ma forse l'impostazione di quella proprietà prima del caricamento della vista causa alcuni problemi? Proverei a commentarlo ...

Sembra che tutto sia configurato correttamente in IB. Fintanto che il proprietario del tuo file è il controller della vista e il relativo punto di vista è legato alla vista, dovresti essere bravo.

Spero che aiuti,

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top