#ios #xcode-storyboard
#iOS #xcode-раскадровка
Вопрос:
Я пытаюсь реализовать переключение между двумя контроллерами представления, встроенными в представление контейнера. В реальном приложении кнопка переключения переключается между картой и списком.
В этом макете проблемы UITableViewController Coffee заменяется UIViewController Sweets.
В простом случае это работает нормально, но когда я добавляю переход к контроллеру Sweets для перехода к дочернему UIViewController, все идет наперекосяк после следующих действий — Flip — segue — Back — Flip. Повторите эти действия, и tableview медленно исчезнет с экрана.
Код в FlipViewController:
@interface FlipViewController ()
@property (strong, nonatomic) UIViewController *controller1;
@property (strong, nonatomic) UIViewController *controller2;
@property (strong, nonatomic) UIViewController *currentViewController;
@end
@implementation FlipViewController
- (void)viewDidLoad
{
[super viewDidLoad];
self.controller1 = [self.childViewControllers firstObject];
self.currentViewController = self.controller1;
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Storyboard" bundle:nil];
self.controller2 = [storyboard instantiateViewControllerWithIdentifier:@"Sweets Controller"];
[self addChildViewController:self.controller2];
}
- (IBAction)flip:(id)sender {
if (self.currentViewController == self.controller1) {
[self transitionFromViewController:self.controller1 toViewController:self.controller2 duration:0.3 options:UIViewAnimationOptionTransitionFlipFromRight animations:nil completion:^(BOOL finished) {
[self.controller2 didMoveToParentViewController:self];
self.currentViewController = self.controller2;
}];
}
else {
[self transitionFromViewController:self.controller2 toViewController:self.controller1 duration:0.3 options:UIViewAnimationOptionTransitionFlipFromRight animations:nil completion:^(BOOL finished) {
[self.controller2 didMoveToParentViewController:self];
self.currentViewController = self.controller1;
}];
}
}
@end
Некоторая отладка, по-видимому, указывает на то, что границы UITableView путаются при возврате. У меня проблема с автозапуском или мой подход с transitionFromViewController: неправильный способ добиться этого эффекта? Любые предложения будут оценены, я слишком долго зацикливался на этой ошибке !?
Комментарии:
1. Это а
UITableView
на регулярнойUIViewController
основе или аUITableViewController
?2. В этом макете это UITableViewController, но я пробовал использовать UIViewController, содержащий UITableView, и я все еще получаю проблему.
3. Меняется ли позиция на 20 каждый раз?
4. Ах да. Я не уверен в точной причине или решении, но … 64 = 20 (строка состояния) 44 (панель навигации).