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Может быть, это приятно добавить?

Другие вопросы по тегам