Как установить состояние UISegmentedControl по умолчанию?
Есть ли способ установить начальный выбранный сегмент в UISegmentedControl в Interface Builder, или мне нужно сделать это в коде? Если это в коде, является ли viewDidLoad лучшим местом для его установки?
Ответы
Ответ 1
В интерфейсе Builder, когда вы выбираете объект UISegmentedControl в своем пользовательском интерфейсе, а затем в панели атрибутов, в сегменте управления есть раскрывающееся меню сегмента, выберите сегмент, который вы хотите выбрать (0,1 и т.д.), и отметьте опцию "selected" под ним.
Ответ 2
Из кода вы можете просто сделать self.segmentedControl.selectedSegmentIndex = someDefaultIndex
.
Следует ли вам установить его в viewDidLoad:
или не полностью зависит от структуры вашего приложения. Например, если ваше приложение запускает и загружает представление в первый раз, и ему нужно установить элемент управления на любое значение, которое оно имело во время предыдущего запуска приложения, тогда, безусловно, имеет смысл сделать это там.
Ответ 3
Если вы не используете раскадровки и хотите установить индекс по умолчанию после некоторых настроек/сетей, подобных мне, этот небольшой фрагмент выберет что-то, если пользователь этого не сделает. Я поместил это в свой подкласс UISegmentedControl
, но вы можете разместить это в любом месте. (Swift 3)
Decl: var UISegmentedControlNoSegment: Int { get }
Desc: A segment index value indicating that there is no selected segment. See selectedSegmentIndex for further information.
Краткая версия:
if selectedSegmentIndex == UISegmentedControlNoSegment {
selectedSegmentIndex = initialIndex
}
Более длинная версия
func reloadData() {
guard let numberOfItems = dataSource?.numberOfItems() else {
return
}
removeAllSegments()
for index in 0...numberOfItems {
insertSegment(with: $image, at: index, animated: false)
}
if selectedSegmentIndex == UISegmentedControlNoSegment {
selectedSegmentIndex = initialIndex
}
}
Ответ 4
После нажатия кнопки "Сегментированное управление" перейдите к тому месту, где вы создали сегменты, и выберите тот, который вы хотите использовать по умолчанию. Затем под этим будет поле с "Selected". Выберите это, и оно будет по умолчанию.