2009-08-04 14 views
5

Yeni başlayan bir iPhone geliştiricisiyim. Kodum şudur: Bir araç çubuğunda UILabel (UIBarButtonItem) metnini programsal olarak değiştirin

UIBarButtonItem *fixedSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil]; 
UILabel *lblTotCaratteri = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 25, 15)]; 
lblTotCaratteri.textAlignment = UITextAlignmentCenter; 
lblTotCaratteri.font = [UIFont italicSystemFontOfSize:13.0]; 
lblTotCaratteri.textColor = [UIColor greenColor]; 
lblTotCaratteri.backgroundColor = [UIColor clearColor]; 
lblTotCaratteri.adjustsFontSizeToFitWidth = YES; 
lblTotCaratteri.text = @"0"; 

UIBarButtonItem *lblCaratteri = [[UIBarButtonItem alloc] initWithCustomView: lblTotCaratteri]; 

inserimentoToolbar.items = [NSArray arrayWithObjects:fixedSpace, lblCaratteri, fixedSpace, nil]; 

Yani benim görünümünde bir UITextView ve programlı oluşturulan bu araç çubuğu var. UITextView'e bir karakter eklediğimde etiket metnini değiştirmek istiyorum. UITextView metni her değiştiğinde, her tuşa basıldığında bir uyarı görüntüleyebilirim. Etiket metnini nasıl değiştireceğimi anlayamıyorum. Umarım senaryonumu açıkladım. İngilizcem için özür dilerim. Selamlar, Luca.

+2

lblTotCaratteri referansı var mı? Değilse, @interface'inizde bildirin. Öyleyse, UILabel * ile (yukarıdaki 2. satırda) yeniden işaretlemeyin. Sonra lblTotCaratteri.text = @ "newtexthere" diyebilirsiniz. – mjhoy

+0

Çalıştı! Onu arayüze ekledim ve elbette bunu tekrarlamadım. Yorumunuzu yanıt olarak nasıl işaretleyebilirim? Tekrar teşekkürler! – crash

+0

Değişkeninizin sabit uzay olarak adlandırıldığını fark ettim, ancak değeri aslında FlexibleSpace. Bu bir sistar mı? – mk12

cevap

6

bir yolu inserimentoToolbar Arayüzünüze bildirildi varsayarak şöyle olacaktır:

[(UILabel *)[[toolbar.items objectAtIndex:1] view] setText:@"sometext"]; 

Bu gerçekten sadece (nesneler açısından) değişmez senin araç çubuğunu varsayarak çalışır.

VEYA

daha ideal çözüm (sizin başlık dosyasına) Arayüzünüze lblTotCaratteri koymak olacaktır. Gibi:

@interface UntitledViewController : UIViewController { 
    UILabel *lblTotCaratteri; 
} 

Sonra dahil kod

UIBarButtonItem *fixedSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil]; 
lblTotCaratteri = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 25, 15)]; 
lblTotCaratteri.textAlignment = UITextAlignmentCenter; 
// etc etc etc 

gibi

Sonra herhangi bir noktada, sadece bu benim için çalıştı,

lblTotCaratteri.text = @"sometext"; 
+0

Maalesef cevabınızı ikinci kısımda temel olarak değiştirdim. Daha önce görmedim. – Neil

+0

Daha önce de belirttiğim gibi, etiketin arayüze eklenmesi ve ihtiyacım olan her yerde aranması için çalıştı. Cevabınız için teşekkür ederiz. – crash

5

Yo kullanmak istiyorsunuz, ben UIBarButtonItem başlığını zaman değiştirebilir Aynı UIBarButtonItem'i tıklıyorum. İhtiyacın olan şey bir tür iki duraklıydı. İlk kez tıklatıldığında "MyText1" yazıyor ve sonra tekrar tıklayın, başlık "MyText2" olarak değişir. Kullanıcı düğmeyi tıkladığında metin değişir.

-(IBAction)myBarButtonItem:(id)item{ 

if(flag){ 
    flag=FALSE; 
    [(UIBarButtonItem *)item setTitle:@"MyText1"]; 
} 
else{ 
    flag=TRUE; 
    [(UIBarButtonItem *)item setTitle:@"MyText2"]; 
} 

NOT: UIBarButtonItem'i programsal olarak oluşturmamıştım. Interface Builder'da oluşturdum ve bu düğmeye "myBarButtonItem" yönteminin referansını ayarladım. Böylece, UIBarButtonItem veya bu tür bir düğmeye basıldığında, "myBarButtonItem" yöntemini çağırır ve düğmeyi (UIBarButtonItem *) için ek yazdığım ve metnin veya başlığın adını değiştirmek için setTitle özelliğini kullandım. - (IBAction) myBarButtonItem:

*** Üstbilginiz dosyasında yöntemle, yani imzasını ilan verme (id) öğesi;

+0

'.metin 'artık görünmüyor (artık?), ama '.title' yapar. – Roger

+0

Programlı olarak benim için çalışmadım. –

İlgili konular