2015-07-23 4 views
3

Я хочу изменить элементы в своем UISegmentedControl на основе другого выбора. Я не хочу изменять количество элементов, а просто ярлыки элементов, а также «скрытую» переменную UISegmentedControl.Swift: Программное изменение элементов UISegmentedControl

Вот мой код, чтобы получить UISegmentedControl:

@IBOutlet weak var viewPicker: UISegmentedControl! 

и вот код, чтобы изменить его:

viewPicker = UISegmentedControl(items: ["Description", "Location"]) 

Однако, это не работает, а иногда и устанавливает viewPicker к нулю, давая ошибку. Каков наилучший способ сделать это?

ответ

4

Поскольку вы объявляете переменную как «слабый», он получит перераспределена как только вы назначаете его. Но вы все равно не должны этого делать, потому что это @IBOutlet -> вы должны подключить его через построитель интерфейсов.

Что касается изменения названия, вместо того, чтобы просто создать новый SC, используйте

self.viewPicker.setTitle("", forSegmentAtIndex: index) 

И, чтобы скрыть/показать сегментированные управления,

self.viewPicker.hidden = true/false 

Надеется, что это помогает!

3

UISegmentControl имеет метод, позволяющий изменять индивидуально названные метки: setTitle(_:forSegmentAtIndex:). Таким образом, вы просто использовать его на сегментированной управления следующим образом:

self.viewPicker.setTitle("Description", forSegmentAtIndex:0) 
self.viewPicker.setTitle("Location", forSegmentAtIndex:1) 
0

Для Swift 3.0 использования:

self.viewPicker.setTitle("Description", forSegmentAt: 0) 
self.viewPicker.setTitle("Location", forSegmentAt: 1) 
Смежные вопросы