UiseGmentEdControl desmarcar (não faça nenhum dos segmentos selecionados)
-
18-09-2019 - |
Pergunta
De fato, o título contém minha pergunta. Eu tenho um controlador de fios e preciso desmarcar a guia atualmente selecionada. Eu tentei:
[menu setSelectedSegmentIndex:-1];
O menu é o uboutlet para o uisegmentControl, mas isso me dá exceção. Alguém tem uma ideia? Obrigado Peter
Solução
Eu assumiria que você ligou [myArray length]
em vez do apropriado [myArray count]
em algum lugar do seu código. O NSARRAY usa o método de contagem, não o comprimento do número de itens que ele contém.
Outras dicas
A maneira certa de fazer isso é:
[menu setSelectedSegmentIndex:UISegmentedControlNoSegment];
Eu acho que você tenta criar uma seleção momentânea no controle segmentado. No Builder de Interface, defina o segmentado como momentâneo. Ou no código que você pode fazer:
menu.momentary = YES;
Definindo o controlador segmentado para .momentary = YES
Altera a maneira como o usuário pode interagir com o segmentoControl. Se você quiser não ter nada selecionado inicialmente quando a página carrega, mas tiver segmentedcontrol, se comporte o mesmo depois que uma seleção é feita pelo usuário, você deseja algo mais assim:
SOLUÇÃO SWIFT 4:
@IBOutlet weak var segmentedControl: UISegmentedControl!
self.segmentedControl.selectedSegmentIndex = UISegmentedControlNoSegment
Agora você pode fazer isso no Xcode 6 no interface Builder:
Deselect the 'Selected' option under segmented control behaviour in attributes inspector.
A solução rápida: @IBOutlet weak var mySegmentedControl: UISegmentedControl!
e mySegmentedControl.selectedSegmentIndex = -1
.
Swift 4
@IBOutlet weak var segmentControl: UISegmentedControl! {
didSet {
segmentControl.selectedSegmentIndex = UISegmentedControl.noSegment
}
}