2011-07-12 2 views
2

Есть два UIViewControllers: MyParentViewController и MyToolbarViewController. MyParentViewController управляет представлением, которое заполняет большую часть экрана. MyToolbarViewController - это подкласс MyParentViewController и управляет сравнительно небольшим представлением с более высоким индексом z, чем представление, управляемое его родительским MyParentViewController.Должны ли родительские UIViewControllers распространять didRotateFromInterfaceOrientation для детей?

Поскольку представление MyParentViewController выше в иерархии представлений, его метод shouldAutorotateToDeviceOrientation, по-видимому, превосходит его по сравнению с MyToolbarViewController. Независимо от того, что он возвращает, используется значение. Однако я не вижу, как MyToolbarViewController didAutorotateFromDeviceOrientation вызывается. Могу ли я переопределить MyParentViewController didAutorotateFromDeviceOrientation и вызвать метод в подвью?

ответ

2

В iOS 4.x Apple определяет все «законные» контейнерные контроллеры (разделенное представление, представление таблицы, навигационное представление и представление табуляции). Эти контроллеры управляют всеми методами управления представлением (viewWill…, viewDid…, shouldAutoRotate…) и направляют их соответствующим образом.

Если вы попытаетесь сделать что-то подобное, ни один из этих методов не будет перенаправлен. В настоящее время, если вам нужно действовать по этим методам, за это отвечает «верхний» контроллер.

[прочитайте между строк для получения ответа в будущем]