2011-01-11 11 views
16

Próbowałem różnych metod, które wszystkie dają mi ostrzeżenia. Takich jak userName = [NSString stringWithFormat:@"%@", [yournamefield stringValue]]; który po prostu daje mi ostrzeżenie oJak mogę uzyskać tekst z UITextField na NSString?

UITextField „” nie może odpowiedzieć „-stringValue”

Jak to zrobić?

+0

http://developer.apple.com/library/ios/#documentation/uikit/ reference/UITextField_Class/Reference/UITextField.html # // apple_ref/doc/uid/TP40006888 – filipe

+0

'-stringValue' jest metodą' NSTextField' – NSGod

Odpowiedz

39

Get tekst wewnątrz pola tekstowego za pomocą właściwości

NSString *name = yourNameField.text; 
+0

Nie! Do ** not ** użyj metody accessor dla czegoś jawnie zdefiniowanego jako właściwość w publicznym nagłówku. – PeyloW

+0

@PeyloW Czy mogę szybko zapytać, dlaczego tak się nie dzieje? Czy to nie jest to, co robi własność, generowanie akcesorów? Czy środowisko wykonawcze nie konwertuje składni z kropek na składnię akcesyjną? –

+0

@MattM: Tak, to jest to, co robi implementacja, ale powinieneś tylko myśleć o tym jako o szczegółach implementacji i skutku ubocznym kompatybilności wstecznej z Objective-C 1.0. Właściwości są przeznaczone dla ** stanu **, a metody do ** zachowania **. Uzyskanie dostępu do właściwości jako metody kompilacji, ale Twój kod wyraźnie informuje, że źle zrozumiałeś intencje interfejsu API. – PeyloW

1

Jak o text:

userName = [NSString stringWithFormat:@"%@", yournamefield.text]; 
+0

Dlaczego używać 'stringWithFormat:' if ciąg jedyną treścią ciągu formatu? – PeyloW

+0

Bez powodu - była to szybka zmiana z jego oryginalnego posta :). – badgerr

12

Użyj właściwość UITextFieldtext:

NSString *userName = yourNameField.text; 
1

dwa sposoby. Jest to właściwość i każda wartość nieruchomości można uzyskać w ten sposób -

  • yournamefield.text
  • [yournamefield text]
Powiązane problemy