Модальный дизайн UITabBarController - PullRequest
1 голос
/ 03 сентября 2011

Я разрабатываю приложение для iPhone, в котором я хотел бы, чтобы был главный экран.Затем я хочу, чтобы пользователи могли нажимать информационную кнопку в правом нижнем углу этого экрана и входить в совершенно другой интерфейс, который будет обрабатывать параметры и различные формы отображения данных.

После некоторых исследований View Controllers в AppleДокументация, я определил, что я определенно хочу использовать модальное представление при нажатии кнопки информации.Моя проблема, однако, заключается в том, что интерфейс, который подходит лучше всего, является UITabBarController.Мне бы хотелось, чтобы в моем UITabBarController была вкладка, представляющая главный экран, и при касании она сообщала основному экрану о необходимости закрыть UITabBarController.

Я видел довольно много примеров в Интернете, где люди добавляютпользовательские контроллеры представления с кнопками, которые запускают отклонение модального представления для вкладок на UITabBarController, но я бы хотел полностью избежать отображения дополнительного представления.Как только пользователь дотронется до вкладки главного экрана, я бы хотел, чтобы модальное представление было отклонено.Я уже экспериментировал с подходами, которые помещали основной экран в UITabBarController, и не был удовлетворен, поэтому я надеюсь, что кто-то там знаком с редким модальным дизайном UITabBarController и может предложить мне некоторые рекомендации.

Isэто вообще возможно?Если нет, то как я могу выполнить тот же поток интерфейса другим способом?

Я еще не пробовал это, но есть ли способ, которым я мог бы настроить UITabBarController с пустым UIViewController для представления основного экранаи вызвать UITabBarControllerDelegate для отправки сообщения о прекращении на главный экран до появления пустого представления?

Ответы [ 2 ]

2 голосов
/ 04 сентября 2011

Хорошо, я понял это.Я признаю, что это, вероятно, не самый ортодоксальный дизайн пользовательского интерфейса, но я думаю, что он имеет интуитивный смысл ... кто-то, вероятно, должен связать меня с рекомендацией Apple UI, которая нарушает это.

Следующий код позволитпользователь нажимает информационную кнопку, которая будет анимировать представление модального UITabBarController.В этом примере UITabBarController имеет только одну вкладку, и панель вкладок не была настроена с иконками или заголовками.Оказавшись в модальном представлении, пользователь может щелкнуть первую вкладку на панели, и модальное представление будет отклонено.(Это логически означает, что вы захотите указать UITabBarController начинаться с индекса, отличного от первого.)

- (IBAction)infoButtonPressed
{
     UIViewController *mainScreen = [[UIViewController alloc] init];
     NSArray *viewControllers = [[NSArray alloc] initWithObjects:mainScreen, nil];
     UITabBarController *tabBarController = [[UITabBarController alloc] init];
     tabBarController.viewControllers = viewControllers;
     //This means that "self" needs to implement the UITabBarControllerDelegate protocol
     tabBarController.delegate = self;
     [self presentModalViewController:tabBarController animated:YES];

     [mainScreen release];
     [viewControllers release];
     [tabBarController release];
}

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
{
     if (viewController == [tabBarController.viewControllers objectAtIndex:0]) {
          [self dismissModalViewControllerAnimated:YES];
     }
}

Однако теперь я получаю предупреждение о двухэтапной анимации вращения:

Using two-stage rotation animation. To use the smoother single-stage animation, this application must remove two-stage method implementations.
Using two-stage rotation animation is not supported when rotating more than one view controller or view controllers not the window delegate

Предварительное исследование показало, что это потому, что я использовал UIImageViewController для отображения фона на главном экране, но с тех пор я изменил его на UIColor initWithPatternImage.Кто-нибудь знает, как избавиться от предупреждения - или если даже важно игнорировать его?

0 голосов
/ 03 сентября 2011

Звучит как запутанный (или, по крайней мере, необычный) пользовательский опыт.Предполагается, что вкладки будут основным уровнем навигации приложений.

Следует рассмотреть возможность отображения разделов в сегментированной кнопке или в вертикальном списке с обратной навигацией (например, в приложении настроек)

...