Я написал пользовательское приложение для своего приложения, которое частично скрывает контроллер представления исходного кода. Segue отлично работает, и я получаю желаемый эффект. Когда я нажимаю кнопку, чтобы отключить переход к контроллеру источника, приложение выйдет из строя. Я помещаю несколько операторов журнала в различные методы, но ничего не вызывается, поэтому я думаю, что неправильно подключил представления. Ниже приведен код списания:Пользовательская кнопка «Сбой назад» вызывает приложение
- (void)perform {
NSLog(@"performing!");
UIView *sourceView = ((UIViewController *)self.sourceViewController).view;
UIView *destView = ((UIViewController *)self.destinationViewController).view;
UIViewController *sourceController = ((UIViewController *)self.sourceViewController);
if (!_rewinding) {
[sourceView.window insertSubview:destView aboveSubview:sourceView];
destView.center = CGPointMake(sourceView.frame.size.width * 1.5, sourceView.center.y);
}
CGPoint newSourceCenter = CGPointMake(sourceView.frame.origin.x - sourceView.frame.size.width * 0.4, sourceView.center.y);
CGPoint newDestCenter = CGPointMake(sourceView.center.x + sourceView.frame.size.width * 0.1, sourceView.center.y);
[UIView animateWithDuration:1.4
animations:^{
if (_rewinding) {
NSLog(@"rewind in segu");
destView.center = CGPointMake([UIScreen mainScreen].bounds.size.width/2, destView.center.y);
sourceView.center = CGPointMake([UIScreen mainScreen].bounds.size.width*1.5, sourceView.center.y);
destView.alpha = 1.0;
} else {
destView.center = newDestCenter;
sourceView.center = newSourceCenter;
sourceView.alpha = 0.5;
}
} completion:^(BOOL finished) {
if (_rewinding)
NSLog(@"completed animation");
}];
}
Фотографии пары, чтобы показать, что происходит. При нажатии на ячейку слайды с подробным представлением отображаются слева от экрана справа, а также вид сверху.
Я попытался с помощью [source presentViewController:dest]
но делать это удаляет исходный вид из окна. Поскольку я частично скрываю источник, он должен оставаться на экране после анимации. Каков правильный способ установить это?
Редактировать: С включенными зомби я получил это в журнале. Это соответствует целевому контроллеру. Поэтому ясно, что он не сохраняется во время сеанса.
[58880:c07] *** -[UIStoryboardUnwindSegueTemplate performSelector:withObject:withObject:]: message sent to deallocated instance 0x1f3c7fe0
Какая именно авария? Можете ли вы разместить символический журнал аварий? –
@RoboticCat Crash, возможно, не было правильным словом для использования. Я получаю EXC_BAD_ACCESS. Я работаю над созданием журнала того, что происходит. – brodney
Чтобы быть ясным: вы говорите, что 0x1f3c7fe0 соответствует предыдущему экземпляру диспетчера представлений, к которому вы сейчас обращаетесь? Я был бы поражен, если бы диспетчер представлений был освобожден, но если это так, я не уверен, как выследить эту ошибку. –