Scope Bar для UITableView, например, App Store?
Кто-нибудь знает, как добавить панель видимости в UITableView
?
Приложение App Store делает это иногда, как на рисунке ниже.
Я хотел бы использовать эту панель видимости для добавления параметров сортировки для элементов в UITableView
. Это было бы более удобно, чем наличие панели инструментов с UISegmentControl
.
Я просто не знаю, как это реализовать. Я даже не знаю имя элемента (я называю его областью видимости, потому что он выглядит так же, как панель видимости UISearchBar
, но это не так).
![image showing what I want]()
Ответы
Ответ 1
Элемент UISegmentedControl с стилем UISegmentedControlStyleBar
. Вы можете установить свойство tintColor
, чтобы получить желаемый цвет. Просто поместите представление над табличным представлением, и вы можете получить что-то похожее на этот снимок экрана.
Ответ 2
На самом деле, в отличие от других, это свойство UISegmentedControl .segmentedControlStyle
имеет недокументированное значение 7.
theSegCtrl.segmentedControlStyle = 7;
Но ответ @Macatomy более безопасен для AppStore (хотя Apple все равно не может это обнаружить).
Ответ 3
Возможно, вы уже решили эту проблему, но я считаю, что это может быть полезно для других людей.
Внутри вашего 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;
}
Вставляет сегментированный элемент управления в виде заголовка таблицы, который (если хотите) также будет отскакивать, когда вы достигнете вершины списка, и в то же время всегда останется видимым во время прокрутки в вашем списке.
Надеюсь, что это поможет.
Ответ 4
UISegmentedControl
Вы создаете его, настраиваете его сегменты и устанавливаете его делегат. Затем делегат принимает какое-то действие каждый раз, когда выбранный сегмент изменяется.