заставить контроллер вида исчезнуть - PullRequest
1 голос
/ 10 апреля 2009

Я пробую приложение с несколькими представлениями, но я не могу заставить первый контроллер представления уйти, когда я ввожу новый контроллер представления. Я кладу второй (предстоящий) контроллер представления в индекс 0, и он просто помещает его в фоновом режиме. Я думал, что [running.view removeFromSuperview] удалит оригинальный viewcontroller, но это не то, что происходит ...

UIViewController *coming = nil;
    UIViewController *going = nil;
    UIViewAnimationTransition transition;

    if (answer == YES)
    {
        coming = boyController;
        going = getInfoController;
        transition = UIViewAnimationTransitionFlipFromLeft;
    }
    else
    {
        coming = girlController;
        going = getInfoController;
        transition = UIViewAnimationTransitionFlipFromLeft;
    }
    NSLog(child);
    [UIView setAnimationTransition:transition forView: self.view cache:YES];
    [coming viewWillAppear:YES];
    [going viewWillDisappear:YES];
    [going.view removeFromSuperview];
    [self.view insertSubview:coming.view atIndex:0];
    [going viewDidDisappear:YES];
    [coming viewDidAppear:YES];

    [UIView commitAnimations];  

1 Ответ

1 голос
/ 10 апреля 2009

Первый небольшой рефакторинг:

coming = (answer ? boyController : girlController);

Вы можете удалить going и transition, так как они используются только один раз. Затем, чтобы на самом деле сделать анимацию, вам нужно поместить все в контекст блока анимации.

[UIView beginAnimations:@"flipAnimation" context:NULL];
[UIView setAnimationTransition:transition forView:self.view cache:YES];
[getInfoController.view removeFromSuperview];
[self.view addSubview:coming.view];
[UIView commitAnimations];

viewWillAppear: и viewWillDisappear: являются методами делегатов. Они будут вызваны автоматически для делегатов этих представлений, если таковые имеются. Они никогда не должны вызываться вручную.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...