Buton uzerindeki texti runtime asamasinda degistirmek

Başlatan z, 16 Temmuz 2013, 05:31:07

z

Butona basildiginda sozkonusu butonun textini degistirebiliyorum.

Fakat bir butona basildiginda diger butonlarin uzerindeki texti degistirmek istiyorum ve bunu beceremedim.

Ornek kod verebilirmisiniz?

Bana e^st de diyebilirsiniz.   www.cncdesigner.com

z

Mevcut uygulamamda Uzerinde Deg yazan bir buton var. Bu butona basinca Deg yazisi Rad'a donusuyor.
Bir kez daha bazarsam bu kez Rad yazisi Deg'e donusuyor.

Buna iliskin  kodum asagida

- (IBAction)ButonDeg:(UIButton *)sender {
    DegRadToggle=(DegRadToggle+1)&1;
    if(DegRadToggle==0) [sender setTitle:@"Deg" forState:UIControlStateNormal];
    else [sender setTitle:@"Rad" forState:UIControlStateNormal];
}


Burada hic sorun yok. Sender olarak gelen parametre zaten basilan butana ait.

[sender setTitle:@"Deg" forState:UIControlStateNormal]; satirinda sender'e ait Title kolayca degistirilebilmekte.

Asil yapmak istedigime gelirsek

Uzerinde Inv yazan butona basinca diger tum butonlarin text degerleri degisecek. Mesela Sin butonu Asin, cos butonu Acos seklinde text deger degistirecek.

Mevcut yazim seklinde butonlarin adi yok. (Sifirdan IOS ogrenmiyorum, orneklere bakarak yaziyorum)

Buton adi olmadigi icin [sender setTitle:@"Deg" forState:UIControlStateNormal]; satirindaki sender parametresine nasil bir deger verecegimi bilemiyorum.

Umarim sorunum daha anlasilir olmustur.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

teknikelektronikci

methodun üzerine gelip ctrl basinca reference aciliyor buna göz gezdirdinizmi? bildigim kadariyla burdaki sender sadece settitle methoduna ait parametre sender degil de baska bir sey olur :/
Ey Türk istikbalinin evlâdı! İşte, bu ahval ve şerâit içinde dahi, vazifen; Türk İstiklâl ve Cumhuriyetini kurtarmaktır! Muhtaç olduğun kudret, damarlarındaki asil kanda mevcuttur!

z

Benim gördüğüm kadarıyla sorun şöyle;

Tasarım aşamasında Butona isim falan vermiyoruz. Bunun yerine buton clicklenince işleyeceği fonksiyonun adı isteniyor bizden.
Kodumuzu da bu fonksiyona yazıyoruz.

Mesela run time aşamasında bu butona basıldığında kendi text değerini değiştirmek istersek click rutini içinde sender'in textine şunu yaz diyoruz. Sender zaten bu butonla ilgili parametre içeriyor.

Fakat bir başka butonun textini başka bir butonun rutininden değiştirmek için bir isme ishityacım var. Butona da isim vermemiştik. Nasıl olacak? Bana bu kısım sorun oldu.

Label'a yazı yazmak sorun değil. Aynı mantıkla buton davranış şeklini action haricinde bir de  outlet (yanlış yazmış olabilirim) tanımlarsam tanımda sorun olmuyor fakat bu fonskiyon içinde text değerini değiştirdiğim komuta sürekli hata veriyor ve derleme yapılmıyor.

Dili, ortamı sıfırdan öğrenecek zamanım yok sorun da burada zaten.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

teknikelektronikci

#4
hmm siz buton 1 click funktionu icinde, baska bir butonun ismini degistirmek istiyorsunuz dogrumudur?

bu sizmisiniz yoksa ?
http://stackoverflow.com/questions/11141697/xcode-how-to-change-the-text-of-a-button-when-another-button-is-pressed

mesaj birleştirme:: 17 Temmuz 2013, 12:58:23

hocam siz bu projenizi önce cocoa icin yazsaniz ? orda alismak daha kolay ios programlama kadar zor gelmedi bana :/
Ey Türk istikbalinin evlâdı! İşte, bu ahval ve şerâit içinde dahi, vazifen; Türk İstiklâl ve Cumhuriyetini kurtarmaktır! Muhtaç olduğun kudret, damarlarındaki asil kanda mevcuttur!

z

Stackoverflowda sorulan soru benim sorunum aynısı (ben sormadım). Fakat verilen cevap, butonun kod ile bağlantısını içermediği için işime yaramadı.

O koda uygun connection yapmaya kalktığımda derlemede hata alıyorum.

Aslında sorumun cevabı Xcode sistemini anlamak açısından çok önemli.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

z

Nihayet cozumu buldum. Daha guzel bir yontem ogreninceye kadar bu isimi gorecek.

Kullandigimiz butonlarin herbirinin tag alanina tasarim asamasinda deger atiyoruz. Default degeri hepsinin 0.
Iki butondan olusan ornegimde 1. butonun tag degerini 1, 2. butonun tag degerini de 2 yaptim.

Asagidaki kod orneginde 1. butona bastigimizda her iki butonun da ismi degisiyor. Istedigim de tam olarak buydu.

- (IBAction)Buton1:(id)sender {

    UIButton *btn1 = (UIButton*)[self.view viewWithTag:1];
    [btn1 setTitle:@"A1" forState:UIControlStateNormal];

    UIButton *btn2 = (UIButton*)[self.view viewWithTag:2];
    [btn2 setTitle:@"A2" forState:UIControlStateNormal];

}


yada

- (IBAction)Buton1:(id)sender {
        [(UIButton*)[self.view viewWithTag:1] setTitle:@"Asin" forState:UIControlStateNormal];
        [(UIButton*)[self.view viewWithTag:2] setTitle:@"Acos" forState:UIControlStateNormal];
}
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

Klein

ios kodlama hakkında hiç fikrim yok.
Ama androidde "FindByID" metodu ile komponenti bulup ona göre işlem yapıyoruz. Delphide de "findcomponent" metodu vardı hatırlarsınız. Muhtemelen  böyle bir metod vardır.