Ders 17 : Buton İle Fonksiyon Çağırmak - UIButton


Bu dersimizde ekrana buton eklemeyi ve buton yardımıyla fonksiyon çağırmayı öğreneceğiz. Önceki derslerimizde UIView Class'ı sayesinde ekrana dikdörtgensel kutucuklar eklemeyi öğrenmiştik. Şimdi UIView Class'ının bir alt Class'ı olan UIButton ile buton eklemeyi öğreneceğiz.

UIButton Eklemek

UIButton UIView Classından türemiş bir Classtır demiştik. Dolayısıyla UIView'a ait bütün özelliklere sahip. Eğer bakmadıysanız UIView Class'ı hakkındakı dersimize bir bakın. Aynı bir UIView oluşturur gibi bir UIButton oluşturalım.

UIButton * buton = [[UIButton alloc]init];    
buton.frame = CGRectMake(100,60, 200, 50);
[self.view addSubview:buton];

Şu an çerçevesini belirlediğimiz bir UIButton oluşturduk ve ekrana ekledik. Şimdi sıra üzerine basıldığında istediğimiz fonksiyonu çağırmakta.

UIButton İle Fonksiyon Çağırmak

Butonun üzerine basıldığında yapılmasını istediğimiz olaylar için bir fonksiyon yazmamız gerekiyor. Bu fonksiyonu yazdıktan sonra UIButton Class'ına ait addTarget fonksiyonunu kullanacağız. addTarget fonksiyonu 

addTarget:(id); action:(SEL); forControlEvents:(UIControlEvents)

şeklindeki gibi bir id bir SEL ve bir de UIControlEvents olmak üzere 3 adet parametre alır. addTarget kısmına "self" yazacağız. Action kısmına çağırılacak fonksiyon adını gireceğiz . Bunun için @selector("fonksiyonAdınız")  yazacağız. Son olarak UIControlEvents kısmına ise fonksiyonun hangi eylemden sonra yapılacağını yazacağız. Örneğin üzerine basıldıktan sonra veya üzerine basıp bıraktıktan sonra vb. Aşağıda touchEvent lerin bir listesini veriyorum.

  •     UIControlEventTouchDown                                       
  •     UIControlEventTouchDownRepeat                       
  •     UIControlEventTouchDragInside                                  
  •     UIControlEventTouchDragOutside                                 
  •     UIControlEventTouchDragEnter                             
  •     UIControlEventTouchDragExit                                   
  •     UIControlEventTouchUpInside                                   
  •     UIControlEventTouchUpOutside                                   
  •     UIControlEventTouchCancel         

Şimdi bir örnekle biz gösterelim.

- (void)viewDidLoad {
    [super viewDidLoad];
    
    UIButton * buton = [[UIButton alloc]init];
    buton.frame = CGRectMake(100,60, 200, 50);
    [buton addTarget:self action:@selector(butonFonksiyonu) forControlEvents:UIControlEventTouchDown];
    [self.view addSubview:buton];

}

-(void)butonFonksiyonu{
    
    NSLog(@"Bu buton bir harika!");

}

Fakat bir sorun var. Maalesef addTarget methodu ile parametre aktarma şansımız yok. Tek yapabileceğimiz şey buttonu aktarmak. Veya kullanmak istediğimiz değişkenleri global değişken olarak tanımlamak. Buttonu aktarmak için şöyle bir kod yazabiliriz.

- (void)viewDidLoad {
    [super viewDidLoad];
    
    UIButton * buton = [[UIButton alloc]init];
    buton.frame = CGRectMake(100,60, 200, 50);
    [buton addTarget:self action:@selector(butonFonksiyonu:) forControlEvents:UIControlEventTouchDown];
    [self.view addSubview:buton];

}
// aktarım UIButton
-(void)butonFonksiyonu : (UIButton *)button{
    
    NSLog(@"%d",(int)button.tag);
}
// aktarım id
-(void)butonFonksiyonu2 : (id)button{

    UIButton * x = button;
    
    NSLog(@"%d",(int)x.tag);

}
Bunun dışında bir aktarım yapmak hataya sebep olacaktır.

Hiç yorum yok :

Yorum Gönder