viewWillAppear для childViewController из центра viewController из IIViewDeckController не вызывается
Хорошо, вот проблема, если у вас возникли проблемы с пониманием названия. Я использую эту библиотеку здесь, и она представлена IIViewDeckController
,
Я начинаю это с простого левого и центра UIViewControllers
:
FTPhoneHomeViewController *home = [[FTPhoneHomeViewController alloc] init];
FTPhoneSideViewController *side = [[FTPhoneSideViewController alloc] init];
IIViewDeckController *vdc = [[IIViewDeckController alloc] initWithCenterViewController:home leftViewController:side];
[self.delegate changeRootViewController:vdc];
FTPhoneHomeViewController
а также FTPhoneSideViewController
просто подклассы UIViewController
, Последняя строка удаляет текущий rootViewController
из окна и добавляет IIViewDeckController
,
Сейчас в FTPhoneHomeViewController
Я добавляю еще UIViewController
с addChildViewController
метод:
FTTileViewController *tileViewController = [[FTTileViewController alloc] initWithFrame:CGRectMake(5.0, 50.0, 469.0, 310) tileData:[FTTileFaker prepareTileData] defaultTileConfig:[FTTileFaker prepareTileConfigs][0] andTileConfigs:[FTTileFaker prepareTileConfigs]];
tileViewController.tileSpacing = 9.0;
[self addChildViewController:tileViewController];
[self.view addSubview:tileViewController.view];
[tileViewController didMoveToParentViewController:self];
Я сделал это, потому что это FTTileViewController
управляет кучей плиток, и с архитектурной точки зрения эту логику лучше всего содержать в своей отдельной UIViewController
,
Когда я использую IIViewDeckController
как rootViewController
из окна мой viewWillAppear
событие в FTTileViewController
не называется. Но это называется в FTPhoneHomeViewController
! Теперь, когда я не использую IIViewDeckController
и просто добавьте FTPhoneHomeViewController
как rootViewController
моего окна FTTileViewController
действительно получает viewWillAppear
событие...
Может быть, это ошибка с IIViewDeckController
и я должен также опубликовать это там. Но я не вижу, что я делаю здесь не так. У кого-нибудь есть мысли по этому поводу?
И если бы кто-нибудь мог проверить мое общее предположение вокруг UIViewControllers
:
Добавление childViewControllers
другому UIViewController
не является обязательным требованием для получения методов цикла просмотра (например, viewWillAppear
) быть переданным другому UIViewController's
Посмотреть. Эти события пропускаются при добавлении другого UIViewController's
смотреть с addSubview
метод. Но вы используете addChildViewController
методы, например, чтобы получить события вращения и поддерживать viewController's
иерархия через ваше приложение.
1 ответ
Хорошо, чтобы ответить на мой собственный вопрос:
в IIViewDeckController
Есть несколько методов, которые вы можете настроить:
- (BOOL)shouldAutomaticallyForwardRotationMethods {
return YES;
}
- (BOOL)shouldAutomaticallyForwardAppearanceMethods {
return YES;
}
- (BOOL)automaticallyForwardAppearanceAndRotationMethodsToChildViewControllers {
return YES;
}
верните ДА от всех из них, и это должно работать. Если для этого представления нет свойства для IIViewDeckController
Может быть, это приятно добавить?