У меня 2 Просмотр контроллеров и я получаю ошибку выше с помощью этого:Попытка представить чей вид не в окне иерархии цель (при использовании SEGUE) - с
-(void)hitwtf{
if (CGRectIntersectsRect(ufo.frame, sanchez.frame)) {
if(((sanchez.frame.origin.y + sanchez.frame.size.height - 5) <= (ufo.frame.origin.y)) && (sanchezJumping < 0))
{
[self performSegueWithIdentifier:@"pushToGameOver" sender:self];
}
}
}
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
if([segue.identifier isEqualToString:@"pushToGameOver"]){
AudioServicesPlaySystemSound(sanchezdeath);
GameOverViewController *controller = (GameOverViewController *)segue.destinationViewController;
controller.CurrentScore = CurrentScore;
}
}
Он работает, получает отображается вид, но Я просто получаю эту ошибку. Я не использую никаких кнопок, представление должно меняться, когда два кадра попадают друг в друга, поэтому мне нужен performSegueWithIdentifier, не так ли?
EDIT:
Ответ: (. В ответ на замечания)
- (void)viewWillDisappear:(BOOL)animated {
if(timer)
{
[timer invalidate];
timer = nil;
}
}
вы пробовали положить точки останова в методе prepareForSegue? Может быть, это называется несколько раз? – Huunneki
Я добавил звук (см. Отредактированную тему), и да, это называется несколько раз. Но как я могу остановить его? Я удаляю sanchez в процессе подготовки к методу segue swell, так как могут кадры все еще иметь контакт и снова вызвать метод prepareForSegue? Или, может быть, это причина таймера, которую я вызываю hitwtf каждые 0,05 секунды? – Robin
Недействительный таймер перед выполнением сеанса? –