UITabBarController, MoreNavigationController и Святой Грааль вращения устройства

http://tablesorter.com/docs/ очень прост в использовании с широким спектром опций удовлетворить Вашим потребностям. :)

6
задан 12 revs, 2 users 74% 11 October 2011 в 18:32
поделиться

2 ответа

Apple не рекомендует создавать подклассы UITabBarController, поэтому я нашел простой способ управлять авторотацией, используя вместо этого категории. Это не исправляет вашу ошибку с контроллерами представления More ..., но я думаю, что это более удобный для Apple способ выполнения работы (и означает меньшее количество подклассов для вас).

Чтобы каждая вкладка в моем приложении автоматически автоматически поворачивалась, я определил -shouldAutorotateToInterfaceOrientation: в своих настраиваемых контроллерах представления, но все они находятся внутри UINavigationControllers в UITabBarController, поэтому сообщение не будет отправлено по цепочке в мой VC. пока эти двое тоже не ответят. Поэтому я добавил следующие строки в файлы делегатов моего приложения:

Добавлено в конец файла MyAppDelegate.h

@interface UITabBarController (MyApp)
@end

@interface UINavigationController (MyApp)
@end

Добавлено в конец файла MyAppDelegate.m

@implementation UITabBarController (MyApp) 
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {
    return YES;
}
@end

@implementation UINavigationController (MyApp) 
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {
    return YES;
}
@end
7
ответ дан 10 December 2019 в 00:42
поделиться

Похоже, у нас есть ошибка. Я создал воспроизводимый минимальный тестовый пример и сообщил об этом через Apple Bug Reporter ( Проблема с RADAR 7139857 ).

Обновление: это было исправлено в iPhone OS 3.1.

Существенная проблема is:

Просмотреть контроллеры уже на Стек контроллера навигации не получить willAnimateRotationToInterfaceOrientation: продолжительность: сообщения, когда контроллер панели вкладок "More Navigation Controller" находится в используйте.

Эта проблема не возникает, когда контроллеры представления элементов панели вкладок являются базовыми контроллерами представления. Только когда они являются контроллерами навигации и только , когда используется иерархия навигации «Больше».

Сообщение консоли (касающееся двухэтапной анимации вращения) предполагает, что что-то внутри структуры (Контроллер дополнительной навигации ?) по-прежнему использует двухэтапную анимацию, хотя в iPhone OS 3.0 теперь рекомендуется одноступенчатая.

Это может объяснить, почему willAnimateRotationToInterfaceOrientation: не вызывается в этом конкретном случае. Согласно документации контроллера представления Apple, это сообщение НЕ будет вызываться, когда вместо этого отправляется ответ на двухэтапные сообщения ориентации первой / второй половины.

3
ответ дан 10 December 2019 в 00:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: