2010-04-09 1 views
1

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

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

ответ

6

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

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

Я не уверен в примерном коде, ближайший, который я мог видеть, это образец «Лучшие песни». Это не меняет вид, он просто меняет FetchedResultsController при нажатии на сегмент.

Вот еще один вопрос, на так, что в значительной степени то же самое:

How do I use a UISegmentedControl to switch views?

1

Это, как я сделал это:

-(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.

+0

Хорошее решение, но это не очень хорошо масштабируется - есть ли более элегантный способ? – fatuhoku

+0

Вы можете просто создать связь между представлениями переключения в массиве и выбранным индексом сегментированного элемента управления. Затем, используя сегментированные методы просмотра, вы можете управлять переключением просмотров. – dmcqu314