2013-03-21 2 views
1

Я один класс с именем "Меню" создание UIButton:Добавить UIButton в ViewController из пользовательского класса

.h файл:

@interface Menu : NSObject 

@property (strong) Forme *forme; 
@property (strong) NSString *imageButtonName; 
@property (strong) UIButton *button; 

- (id) initWithClef:(int)clef hauteur:(int)hauteur largeur:(int)largeur posY:(int)posY posX:(int)posX alpha:(float)alpha imageButtonName:(NSString*)imageButtonName button:(UIButton*)button; 

@end 

.m файл:

#import "Menu.h" 

@implementation Menu 

@synthesize forme = _forme; 
@synthesize button = _button; 
@synthesize imageButtonName = _imageButtonName; 

- (id) initWithClef:(int)clef hauteur:(int)hauteur largeur:(int)largeur posY:(int)posY posX:(int)posX alpha:(float)alpha imageButtonName:(NSString *)imageButtonName button:(UIButton *)button 
{ 
    if ((self = [super init])) 
     { 
      NSLog (@"test2"); 
      self.forme =[[Forme alloc]initWithClef:clef hauteur:hauteur largeur:largeur posY:posY posX:posX alpha:alpha]; 
      self.button = button; 
      [button setFrame:CGRectMake(largeur, hauteur, posX, posY)]; 
      [button setBackgroundImage:[UIImage imageNamed:imageButtonName] forState:UIControlStateNormal]; 
     } 
    return self; 
} 

Я хочу для автоматического отображения созданных кнопок в представлении ViewController. Кто-нибудь может мне помочь?

ответ

0

и добавить параметр OnView к вашему initClef ....

- (id) initWithClef:(int)clef hauteur:(int)hauteur largeur:(int)largeur posY:(int)posY posX:(int)posX alpha:(float)alpha imageButtonName:(NSString *)imageButtonName button:(UIButton *)button onView:(UIView *)view 
{ 
    if ((self = [super init])) 
    { 
     NSLog (@"test2"); 
//  self.forme =[[Forme alloc]initWithClef:clef hauteur:hauteur largeur:largeur posY:posY posX:posX alpha:alpha]; 
     self.button = button; 
     [button setFrame:CGRectMake(largeur, hauteur, posX, posY)]; 
     [button setBackgroundImage:[UIImage imageNamed:imageButtonName] forState:UIControlStateNormal]; 
     [view addSubview:button]; 

    } 
    return self; 
} 

называют в ViewController

Menu * menu2=[[Menu alloc] initWithClef:1 hauteur:30 largeur:30 posY:30 posX:30 alpha:1 imageButtonName:@"arti.png" button:b onView:self.view]; 
+0

Спасибо! это работает. Но теперь я хочу назвать это из третьего класса. Поэтому onView не может быть «self.view». Есть ли у вас какие-либо идеи? – alex777771

+0

Я нашел решение, спасибо! – alex777771

0

Я думаю, вы должны прочитать некоторые учебные пособия и учебники

Просто добавьте эту кнопку для просмотра ViewController в методе инициализации:

[button setBackgroundImage:[UIImage imageNamed:imageButtonName] forState:UIControlStateNormal]; 
[self.view addSubview:button]; 
+0

Я попытался это, но он не работает. Я также попытался: UIViewController * newview = [[UIViewController alloc] init]; [newview.view addSubview: self.button]; – alex777771

+0

Поделиться, чем больше кода, чтобы помочь –

+0

В моем представленииDidLoad methode: Menu * play = [[Menu alloc] initWithClef: 1 hauteur: 100 largeur: 300 posY: 100 posX: 50 alpha: 1 imageButtonName: @ "play.png" button: [[UIButton alloc] init]]; чем если я добавлю [self.view addSubview: button]; in viewDidLoad работает. Но я действительно хочу автоматически отображать свои кнопки в методе init. thanks – alex777771

0

Я думаю, что просто добавив кнопку на представление следует делать трюк, вызов:

[self.view addSubview:button] 

После инициализации вашей кнопки вы S пока вам не нужно «добавить» кнопку в представление с помощью addSubview, иначе ваша кнопка не будет нарисована на экране.

+0

спасибо, но это не сработает. – alex777771

+0

проверьте свои аргументы в своем init. Являются ли эти допустимые ширины и высоты? –

+0

Да: Меню * play = [[Меню распределения] initWithClef: 1 hauteur: 100 largeur: 300 posY: 100 posX: 50 alpha: 1 imageButtonName: @ "play.png" кнопка: [[UIButton alloc] init]]; – alex777771

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