Scope Bar для UITableView как App Store? - PullRequest
11 голосов
/ 04 июля 2010

Кто-нибудь знает, как добавить область видимости в UITableView? Приложение App Store иногда делает это, как на картинке ниже.

Я хотел бы использовать эту область видимости, чтобы добавить параметры сортировки для элементов в UITableView. Это было бы удобнее, чем иметь панель инструментов с UISegmentControl.

Я просто не знаю, как это реализовать. Я даже не знаю названия элемента (я называю его областью видимости, потому что он выглядит точно так же, как и область видимости UISearchBar, но это не так).

image showing what I want

Ответы [ 4 ]

13 голосов
/ 04 июля 2010

На самом деле, в отличие от того, что говорили другие, этому свойству UISegmentedControl .segmentedControlStyle присвоено недокументированное значение 7.

 theSegCtrl.segmentedControlStyle = 7;

Но @ Macatomy более безопасен для AppStore (хотя Apple все равно не может обнаружить это).

4 голосов
/ 10 января 2013

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

Внутри вашего ViewController, который вы используете в этом TableViewController, вы должны вставить следующий код:

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {

NSArray *segmentTextContent = [NSArray arrayWithObjects: @"one",@"two",@"three", nil];
UISegmentedControl *segmentedControl = [[UISegmentedControl alloc] initWithItems:segmentTextContent];
segmentedControl.frame = CGRectMake(2, 5, 316, 35);

[self.segmentedControl addTarget:self action:@selector(segmentChanged:) forControlEvents:UIControlEventValueChanged];
self.segmentedControl.segmentedControlStyle = UISegmentedControlStyleBar; //changes the default style
self.segmentedControl.tintColor = [UIColor darkGrayColor]; //changes the default color
self.segmentedControl.enabled = true;
self.segmentedControl.selectedSegmentIndex = 0;

return self.segmentedControl;

}

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

Надеюсь, это поможет.

2 голосов
/ 04 июля 2010

Элемент представляет собой UISegmentedControl со стилем UISegmentedControlStyleBar. Вы можете установить свойство tintColor, чтобы получить желаемый цвет. Просто поместите вид над представлением таблицы, и вы получите что-то похожее на этот скриншот.

1 голос
/ 04 июля 2010

UISegmentedControl

Вы создаете его, настраиваете его сегменты и устанавливаете его делегата. Затем делегат предпринимает какое-то действие каждый раз, когда изменяется выбранный сегмент.

...