Переключение видов назад не работает в xcode - PullRequest
0 голосов
/ 15 февраля 2012

Я использую следующий метод для переключения видов:

FirstView.m

-(IBAction)showAnimal:(UIButton *)sender{
    NSString *digit = [NSString stringWithFormat:@"%d",[sender tag]];
     //NSString *digit = [[sender titleLabel] text];


    AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
    appDelegate.indexOfImage = digit;

    Animal *myAnimal = [[Animal alloc] 
                             initWithNibName:@"Animal" bundle:nil];

    [UIView beginAnimations:@"flipView" context:nil];
    [UIView setAnimationDuration:1.5];
    [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
    [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft  
                           forView:self.view cache:YES];

    [UIView commitAnimations];

    //[self presentModalViewController:myAnimal animated:YES];


    myAnimal.view.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);


    [self.view addSubview:myAnimal.view];

    self.view.bounds = myAnimal.view.bounds;
}

Метод во втором представлении Animal.m

 -(IBAction)backToFront:(id)sender{

[UIView beginAnimations:@"flipView" context:nil];
[UIView setAnimationDuration:1.2];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
[UIView setAnimationTransition:UIViewAnimationTransitionCurlDown
                      forView:self.view.superview cache:YES];


[self.view removeFromSuperview];
[UIView commitAnimations];

}

Я использовал этот код несколько раз, и он всегда работал без проблем, до сих пор. Мое приложение рушится каждый раз, когда я хочу переключиться обратно. Поэтому метод в представлении Animal не работает. Странно то, что я получаю странную ошибку. Я получил скриншот этого.

enter image description here

Пожалуйста, помогите!

Ответы [ 3 ]

1 голос
/ 15 февраля 2012

Я думаю, что здесь происходит то, что вы удаляете представление из его суперпредставления до завершения анимации.Если ваш контроллер представления не сохранил удаленное представление, оно будет освобождено и, вероятно, освобождено, как только оно будет удалено.Анимация вызовет исключение неправильного доступа, которое вы получаете, потому что оно пытается получить доступ к объекту, которого там больше нет.

Чтобы исправить, избегайте удаления представления из суперпредставления до тех пор, пока анимация не будет завершена.

1 голос
/ 15 февраля 2012

EXC_BAD_ACCESS обычно появляются, когда вы имеете дело с объектом деблокирования (зомби) .. перейдите в Product> Edit Scheme> в области переменных среды и добавьте NSZombieEnabled со значением yes .. это покажет вам объекты-зомби в консоли.

0 голосов
/ 16 февраля 2012

Спасибо за вашу помощь, но я нашел другой способ справиться с этой ошибкой. Ты был прав. Предыдущая точка зрения была отменена, прежде чем вернуться к нему. Это произошло из-за ARC (автоматического подсчета ссылок), поэтому я отключил его, используя this article . Поэтому я дам вам обоим очки за помощь! Я ценю это!

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