Pergunta

Eu estou tentando carregar um temporária, slide-in, vista de outro controlador de vista. controladores de vista do meu aplicativo são estruturados:

Application > Tab Bar Controller > TabBarItem > View Controller

Neste controlador de vista, eu tenho um botão que dispara com sucesso um método para carregar a exibição temporária:

- (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];
}

Tenho verificado que a minha WOTimePickerViewController está retornando com sucesso do método init mas a vista nunca entra seu método viewDidLoad.

Então, se eu olhar a vista em IB, ele parece estar ligado à propriedade "visão" do vc. Quando eu executo a exibição no simulador (a partir de IB) torna corretamente.

Quando eu executar o aplicativo de Xcode, eu posso navegar para a vista, clique meu botão, e um em branco aparece tela branca (note que este não é o fundo branco da opinião de que deve ser carregado).

Foi útil?

Solução

Você deve fazê-lo como este ..

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];

Mas o importante que está faltando é que você não está fazendo certo.

Você deve fazê-lo como:

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

e quando quiser descartar o controlador modalView você deve fazê-lo como:

[self.navigationController dismissModalViewControllerAnimated:YES];

Outras dicas

Eu acho que o modalTransitionStyle do controlador de vista se aplica a vista modais mostrados de que controlador de vista. Então, se você quiser usar a transição UIModalTransitionStyleCoverVertical para exibir seu controlador modal, você deve definir a propriedade modalTransitionStyle no controlador de exibição pai (self), não o novo.

Eu não tenho nenhuma experiência usando o modalTransitionStyle, mas talvez definindo essa propriedade antes da visão é carregado está causando alguns problemas? Eu tentaria comentando-o para fora ...

Parece que tudo está configurado corretamente no IB. Enquanto do seu arquivo proprietário é o controlador de vista, e de tomada de vista está vinculada à vista que deve ser bom.

Espero que ajude,

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top