Estou tentando atualizar o texto em um UIButton quando clico nele. Estou usando a seguinte linha para alterar o texto:
calibrationButton.titleLabel.text = @"Calibration";
Eu verifiquei que o texto está mudando, mas quando eu executo o aplicativo e clico no botão, ele muda para "Calibration" por uma fração de segundo e depois volta para o seu valor padrão. Alguma ideia de por que isso pode estar acontecendo? Há algum tipo de função de atualização que preciso chamar?
objective-c
ios
xcode
event-handling
uibutton
Julian Coltea
fonte
fonte
Respostas:
Ao dispor suas subvisualizações, um UIButton definirá o valor de texto do titleLabel usando seus próprios valores de título, de forma que você possa definir até quatro strings diferentes para os quatro estados (normal, destacado, selecionado, desabilitado).
Por causa desse recurso, definir o texto do titleLabel diretamente não persistirá e será redefinido pelo botão quando ele exibir suas subvisualizações.
Isso é o que você deve fazer para alterar o texto do título para o estado de um botão.
fonte
button.titleLabel
, verá que titleLabel é uma propriedade somente leitura e, portanto, todas as propriedades de uma propriedade somente leitura são somente leitura. Usar a notação de ponto para editá-los não funcionará e, portanto, você precisa de métodos explícitos para editá-los. Isso faz sentido pelo menos para mim.Although this property is read-only, its own properties are read/write. Use these properties primarily to configure the text of the button. For example:
Para definir o texto do botão, use o seguinte método:
Veja a
UIButton
referência da classe para mais detalhes ... http://developer.apple.com/library/ios/#documentation/uikit/reference/UIButton_Class/UIButton/UIButton.htmlOu em Swift 3:
fonte
programaticamente, você pode definir o título do botão como abaixo:
você também pode definir a propriedade do título do botão no storyboard.
fonte
Não é um grande negócio e, possivelmente, óbvio, mas existem vários estados disponíveis para botões. Se você fornecer o 'errado', não verá a alteração do texto conforme desejado.
Percebi que meu botão não estava mostrando o texto que adicionei, usando os métodos mostrados aqui. Verifique este link para certificar-se de que está fornecendo o UIControlState pretendido.
Qual é a diferença entre UIControlStateHighlighted e UIControlStateSelected?
fonte
Para Swift 3.0
fonte
Para Swift 2.0:
fonte
Se você não quiser definir o título para todos os estados, apenas defina-o para o estado normal, pois o título dos estados não definidos será o padrão para o título do estado normal.
fonte