Я создал свой собственный контроллер для просмотра разделов для iPad. Моя главная цель в создании моего собственного - позволить пользователю открывать/закрывать левую боль по желанию. Проблема, с которой я сталкиваюсь, заключается в том, что я не могу найти способ заставить диспетчеры представлений в моей правой боли оживить изменения. Я аниматирую представления в своем контроллере разделенного вида, но все остальные контроллеры суб-представлений в правой панели не оживляют их представления. Я не переключаю виды, поэтому я не могу использовать какие-либо из этих методов, и я не изменяю ориентации, поэтому эти методы недоступны (хотя, я все же пытался их попробовать, но это не сработало). Кто-нибудь знает, как это сделать?UIViewController Контейнерные субконтроллеры анимации
В настоящее время мой код, чтобы начать анимацию является:
- (void) setShowLeftPane:(BOOL)showLeftPane{
if (_showLeftPane != showLeftPane){
_showLeftPane = showLeftPane;
//Alert viewcontrollers and perform animation
if (showLeftPane) [_leftController viewWillAppear:YES];
else [_leftController viewWillDisappear:YES];
[UIView animateWithDuration:.25 animations:^{
[self layoutViews];
[_rightController viewWillLayoutSubviews];
} completion:^(BOOL fin){
[_rightController viewDidLayoutSubviews];
if (_showLeftPane) [_leftController viewDidAppear:YES];
else [_leftController viewDidDisappear:YES];
}];
//Switch out the appropriate pane button view
[_showLeftPane ? _openLeftPane : _closeLeftPane removeFromSuperview];
[self.view addSubview:_showLeftPane ? _closeLeftPane : _openLeftPane];
}
}
В настоящее время мой правый контроллера вида панели является UINavigationController, так что я имею дело с запасом классом. Я рассмотрел вопрос о добавлении метода категории viewWillAnimateSubviewLayoutWithDuration:(NSTimeInterval)interval
в UINavigationController, который будет циклически проходить через его контроллеры представлений, которые тестируют/отправляют тот же самый метод в его контроллеры представления, чтобы они могли выполнять их анимацию, но это не совсем идеально, особенно если есть способ использовать акции методы.
Я рассматриваю возможность написать свой собственный навигационный контроллер, но это большая работа, которую я не хочу делать, если мне это не нужно.