UISegmentedControl отмените выбор (не выделяйте ни один из сегментов)
-
18-09-2019 - |
Вопрос
на самом деле в названии содержится мой вопрос.У меня есть UISegmentedControl, и мне нужно отменить выбор текущей выбранной вкладки.Я пытался:
[menu setSelectedSegmentIndex:-1];
меню является UBOutlet для uisegmentedcontrol, но это дает мне исключение.у кого-нибудь есть какая-нибудь идея?спасибо питер
Решение
Я бы предположил, что вы позвонили [myArray length]
вместо надлежащего [myArray count]
где-то в вашем коде.NSArray использует метод count, а не length для количества содержащихся в нем элементов.
Другие советы
Правильный способ сделать это -:
[menu setSelectedSegmentIndex:UISegmentedControlNoSegment];
Я предполагаю, что вы пытаетесь создать мгновенный выбор в сегментированном элементе управления.В interface builder установите для segmentedcontrol значение momentary.Или в коде вы можете сделать:
menu.momentary = YES;
Установка segmentedControl в .momentary = YES
изменяет способ взаимодействия пользователя с segmentedControl.Если вы хотите, чтобы изначально при загрузке страницы ничего не было выбрано, но чтобы segmentedControl вел себя так же после того, как выбор сделан пользователем, тогда вам понадобится что-то более похожее на это:
Решение Swift 4:
@IBOutlet weak var segmentedControl: UISegmentedControl!
self.segmentedControl.selectedSegmentIndex = UISegmentedControlNoSegment
Теперь вы можете сделать это в xcode 6 в interface builder:
Deselect the 'Selected' option under segmented control behaviour in attributes inspector.
Быстрое решение: @IBOutlet weak var mySegmentedControl: UISegmentedControl!
и mySegmentedControl.selectedSegmentIndex = -1
.
быстрый 4
@IBOutlet weak var segmentControl: UISegmentedControl! {
didSet {
segmentControl.selectedSegmentIndex = UISegmentedControl.noSegment
}
}