Можно ли использовать сегментированный элемент управления для изменения вида? - PullRequest
1 голос
/ 10 апреля 2010

Я хочу использовать сегментированный элемент управления вместо контроллера UITabBar для изменения вида. Это в соответствии с HIG?

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

Ответы [ 2 ]

6 голосов
/ 10 апреля 2010

Существует несколько приложений Apple, которые используют сегментированный элемент управления для изменения вида: iTunes, приложение App Store и приложение YouTube. Тем не менее, все они используют его в верхней части экрана и в сочетании с сегментированным элементом управления. Приложение «Карты» использует один значок в нижней части экрана, но идея отличается от панели вкладок. Приложение «Календарь» также использует одно из представлений «Список», «День» и «Месяц» (на панели инструментов внизу).

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

Я не уверен насчет примера кода, самый близкий, который я мог видеть, является примером "Top Songs". Это не меняет местами представления, оно просто меняет FetchedResultsController при нажатии на сегмент.

Вот еще один вопрос о SO, который почти такой же:

Как использовать UISegmentedControl для переключения представлений?

1 голос
/ 22 августа 2011

Вот как я это сделал:

-(IBAction)segmentedControlIndexChanged{
switch (self.segmentedControl1.selectedSegmentIndex) {
    case 0:
        [details1 removeFromSuperview];
        [details2 removeFromSuperview];
        [details3 removeFromSuperview];
        [details addSubview:details0];
        break;
    case 1:
        [details2 removeFromSuperview];
        [details0 removeFromSuperview];
        [details3 removeFromSuperview];
        [details addSubview:details1];
        break;
    case 2:
        [details0 removeFromSuperview];
        [details1 removeFromSuperview];
        [details3 removeFromSuperview];
        [details addSubview:details2];
        break;
    case 3:
        [details0 removeFromSuperview];
        [details1 removeFromSuperview];
        [details2 removeFromSuperview];
        [details addSubview:details3];
        break;
    default:
        break;
}
}

Убедитесь, что вы привязали метод valueChanged сегментированного элемента управления в IB к этому IBAction.

...