Как я могу установить состояние по умолчанию UISegmentedControl?

StackOverflow https://stackoverflow.com/questions/1027424

Вопрос

Есть ли способ установить начальный выбранный сегмент в UISegmentedControl в Интерфейсном Разработчике, или я должен сделать это в коде? Если это в коде, является ли viewDidLoad лучшим местом для его установки?

Это было полезно?

Решение

В Интерфейсном Разработчике, когда вы выбираете объект UISegmentedControl в своем пользовательском интерфейсе, затем в панели атрибутов, в сегментном управлении есть раскрывающееся меню сегмента, выберите сегмент, который вы хотите выбрать (0,1 и т. д.) и отметьте опцию «выбранный» под ним.

Другие советы

Из кода вы можете просто сделать self.segmentedControl.selectedSegmentIndex = someDefaultIndex .

Должен ли он быть установлен в viewDidLoad: или нет, полностью зависит от структуры вашего приложения. Например, если ваше приложение запускается и загружает представление в первый раз и должно установить для элемента управления значение, которое оно имело во время предыдущего запуска приложения, то это определенно имеет смысл сделать там.

Если вы не используете раскадровки и хотите установить индекс по умолчанию после некоторой настройки / работы в сети, как я, этот маленький фрагмент кода выберет что-то, если пользователь этого не сделал. Я поместил это в мой подкласс 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
    }
}

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top