Как установить состояние 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". Выберите это, и оно будет по умолчанию.