2013-11-22 3 views
1

Я хочу создать 3-4 кнопки программно, но с пользовательским классом и определенной парой значений/ключей, но я изо всех сил пытаюсь это сделать. Кнопка, которую я хочу создать, должна иметь пользовательский класс с именем «AnswerButton». Добавление UIButton.tag не должно быть проблемой, поэтому я могу точно указать, какую кнопку нажали, не так ли?Создание UIButton программно с пользовательским классом

Вот код, я использую для создания кнопок:

NSMutableArray *catNames; 
catNames = [NSMutableArray arrayWithCapacity:5]; 
[catNames addObject:@"Boote"]; 
[catNames addObject:@"Gewässer"]; 
[catNames addObject:@"Technik"]; 
[catNames addObject:@"Krims Krams"]; 

[self dynamiclyCreateButtons:4 :catNames]; 

- (void)dynamiclyCreateButtons:(int)howMany :(NSMutableArray*)catNames { 
    float standard_btnHeight = 30.0; 
    float standard_btnWidth = 200.0; 
    CGFloat p = 120; 

    for(int i = 0; i != howMany; i++){ 
     UIButton *catBtn = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
     [catBtn setFrame:CGRectMake(0.0f, 0.0f, standard_btnWidth, standard_btnHeight)]; 
     [catBtn setCenter:CGPointMake(100.0f, p)]; 
     [catBtn setTitle:[catNames objectAtIndex:i] forState:UIControlStateNormal]; 
     [catBtn addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside]; 
     [self.view addSubview:catBtn]; 
     p=p+40; 
     catBtn = nil; 
    } 
} 

// Редактировать Что я имею в виду пользовательский класс: https://i.stack.imgur.com/8r2oz.png

// Edit 2 (Правильный ответ, так как я не могу написать ответ сам, чтобы указать на это лучше)

Просто здесь, чтобы указать на это и найти ответ проще: ответьте Грегом правильно. Вы не должны создавать кнопки с классом по умолчанию, но с пользовательского класса вместо:

Заменить

UIButton *catBtn = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 

с

AnswerButton *catBtn = [AnswerButton buttonWithType:UIButtonTypeRoundedRect]; 

Не забудьте импортировать класс!

+0

Что вы имеете в виду пользовательский класс? Вы хотите создать все свои кнопки с помощью класса «AnswerButton» или вы хотите создать каждую кнопку с другим классом? – Greg

+0

Вы ищете класс с именем AnswerButton, полученный из UIButton? – HRM

+0

почему catBtn = nil; – Retro

ответ

2

Попробуйте это ...

-(void)dynamiclyCreateButtons:(int)howMany :(NSMutableArray*)catNames { 
    float standard_btnHeight = 30.0; 
    float standard_btnWidth = 200.0; 
    CGFloat p = 120; 


    for(int i = 0; i != howMany; i++){ 
     UIButton *catBtn = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
     [catBtn setFrame:CGRectMake(0.0f, 0.0f, standard_btnWidth, standard_btnHeight)]; 
     [catBtn setCenter:CGPointMake(100.0f, p)]; 
     [catBtn setTag:i]; 
     [catBtn setTitle:[catNames objectAtIndex:i] forState:UIControlStateNormal]; 
     [catBtn addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside]; 
     [self.view addSubview:catBtn]; 
     p=p+40; 
     catBtn = nil; 
    } 
} 
- (IBAction)buttonClicked:(id)sender 
{ 
    NSLog(@"Button.Tag = %d",[sender tag]); 
} 

EDIT: Если вы хотите использовать пользовательский класс, вы должны создать класс, унаследованный от UIButton. Затем импортируйте этот класс в контроллер вида.

После этого заменить UIButton с YourCustomButton как ..

YourCustomButton *catBtn = [YourCustomButton buttonWithType:UIButtonTypeRoundedRect]; 
+0

Спасибо, вещь TAG сейчас работает. Любая идея о том, как добавить класс к этой кнопке? – paskl

+0

ваш прием. Я не могу понять, что вы хотите сказать «добавьте класс». –

+0

Грег указал мне в правильном направлении. См. Мое второе редактирование в главном сообщении. Извините, если вначале это было недостаточно ясно. – paskl

Смежные вопросы