Więc próbuję zaktualizować tekst na UIButton, kiedy go kliknę. Używam następującego wiersza, aby zmienić tekst:
calibrationButton.titleLabel.text = @"Calibration";
Sprawdziłem, że tekst się zmienia, ale kiedy uruchamiam aplikację i klikam przycisk, na ułamek sekundy zmienia się na „Kalibracja”, a następnie wraca do wartości domyślnej. Jakieś pomysły, dlaczego tak się dzieje? Czy jest jakaś funkcja odświeżania, którą muszę wywołać?
objective-c
ios
xcode
event-handling
uibutton
Julian Coltea
źródło
źródło
Odpowiedzi:
Podczas układania widoków podrzędnych, przycisk UIButton ustawi wartość tekstową titleLabel przy użyciu własnych wartości tytułu, dzięki czemu można ustawić do czterech różnych ciągów dla czterech stanów (normalny, podświetlony, wybrany, wyłączony).
Ze względu na tę funkcję, bezpośrednie ustawienie tekstu titleLabel nie będzie zachowywane i zostanie zresetowane za pomocą przycisku, gdy wyświetla podglądy.
Oto, co musisz zrobić, aby zmienić tekst tytułu dla stanu przycisku.
źródło
button.titleLabel
, zobaczysz, że titleLabel jest właściwością tylko do odczytu, a więc wszystkie właściwości właściwości tylko do odczytu są również tylko do odczytu. Używanie notacji z kropką do ich edycji nie zadziała, więc potrzebujesz jawnych metod, aby je edytować. Przynajmniej dla mnie to ma sens.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:
Aby ustawić tekst przycisku, użyj następującej metody:
UIButton
Więcej informacji można znaleźć w dokumentacji klasowej ... http://developer.apple.com/library/ios/#documentation/uikit/reference/UIButton_Class/UIButton/UIButton.htmlLub w Swift 3:
źródło
programowo możesz ustawić tytuł przycisku jak poniżej:
możesz także ustawić właściwość tytułu przycisku z serii ujęć.
źródło
Nie jest to wielka sprawa i prawdopodobnie oczywista, ale istnieje kilka stanów dostępnych dla przycisków. Jeśli podasz „zły”, tekst nie zmieni się zgodnie z oczekiwaniami.
Zauważyłem, że mój przycisk nie wyświetlał tekstu, który dodałem, używając metod pokazanych tutaj. Sprawdź to łącze, aby upewnić się, że podajesz stan UIControl, który zamierzasz.
Jaka jest różnica między UIControlStateHighlighted a UIControlStateSelected?
źródło
Dla Swift 3.0
źródło
W przypadku Swift 2.0:
źródło
Jeśli nie chcesz ustawiać tytułu dla wszystkich stanów, po prostu ustaw go na stan normalny, ponieważ tytułem stanów nieustawionych będzie domyślnie tytuł normalnego stanu.
źródło