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

Foi útil?

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
    }
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top