Dinamik UIButton

Xcode’da storyboard kullanarak buton oluşturabilir, ihtiyacınıza göre düzenleyerek butona gerekli fonksiyonlar yükleyebilirsiniz. Objelerin yerlerinin sabit olmadığı, değişkenlik gösterdiği durumlarda objeleri dinamik olarak oluşturmak gerekebilir. Örneğin; basit bir puzzle oyunu yazacaksınız ve oluşturacağınız oyun tahtasının boyutları kullanıcı tarafından belirlenecek. Bunun gibi durumlarda objelerin koordinatlarını belirleyerek storyboard’dan oluşturmak yerine dinamik olarak oluşturmayı düşünebiliriz.

Sık kullanılan bir obje olan UIButton kullanarak örneklendirmeye çalışalım.

Bir UIButton objesini aşağıdaki gibi yaratabilirsiniz:

UIButton *myButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[myButton addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchDown];
[myButton setTitle:@"Button" forState:UIControlStateNormal];
myButton.frame = CGRectMake(80, 200, 160, 40);
[self.view addSubview:myButton];

action:@selector(buttonPressed:) kısmı, butona basıldığında hangi fonksiyonun çalıştığını belirtir.

addTarget:self –> çalışacak fonksiyonun hangi class’da olduğunu gösterir. self olduğu için butona basıldığında aynı class içindeki buttonPressed fonksiyonu çalışacaktır.

Screen Shot 2013-09-19 at 12.24.52 AM

buttonPressed fonksiyonu:

- (void) buttonPressed:(id)sender
{
  NSLog(@"Button Pressed");
  //TO DO
}

Butona arkaplan resmi ekleyebiliriz:

UIImage *btnImg;
btnImg = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"img2" ofType:@"png"]];
[myButton setBackgroundImage:btnImg forState:UIControlStateNormal];

Proje dosyasında bulunan img2.png dosyası arkaplan resmi olarak ayarlanır.

Screen Shot 2013-09-19 at 12.26.10 AM

Ekranda birden fazla buton (veya obje) aynı fonksiyonu çalıştırdığı durumlarda hangi butona basıldığını anlamak için aşağıdaki kodu kullanabiliriz:

- (void) buttonPressed:(id)sender
{
   UIButton *pressedButton = (UIButton *)sender; // pressedButton hangi butona basıldığını gösterecektir
}

Buton örneğindeki viewController.m dosyasını aşağıda bulabilirsiniz:

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void) buttonPressed:(id)sender
{
 UIButton *pressedButton = (UIButton *)sender;
 int pressedTag = pressedButton.tag;
 NSLog(@"pressed button tag number: %d",pressedTag);
}

- (void)viewDidLoad
{
 [super viewDidLoad];
 UIImage *btnImg;
 btnImg = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"img2" ofType:@"png"]];
 UIButton *myButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
 [myButton addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchDown];
 [myButton setBackgroundImage:btnImg forState:UIControlStateNormal];
 [myButton setTitle:@"Button" forState:UIControlStateNormal];
 myButton.frame = CGRectMake(80, 200, 160, 40);
 myButton.tag=1;
 [self.view addSubview:myButton];
}

- (void)didReceiveMemoryWarning
{
 [super didReceiveMemoryWarning];
 // Dispose of any resources that can be recreated.
}

@end
0

Aycan Ayhan

Yorum Yaz

Haftalık Bülten

Mobilhanem'de yayınlanan dersleri haftalık mail almak ister misiniz?