2012-02-21 9 views
0

これは私の最初の投稿です。どんな助けでも大歓迎です。UIButtonsを作成する方法

多くのUIButtonをプログラムで作成する必要がありますが、多くのボタンがあるとコードがかなり乱雑になりますので、UIbutton、文字列、UIcolorを入力と設定にするメソッドを記述しました。残りのUIButton属性は私のものです。問題は、ボタンが作成されていないように見えることです。私は可能なことをしようとしているのですか、それとも間違っているのでしょうか?

方法

-(void)makeButton:(UIButton *)name titleOfButton:(NSString *)title buttonColor:(UIColor *)color { 

    name =[[UIButton alloc] initWithFrame:(CGRectMake(400,400,150,100))]; 
    [name setAlpha:(0.5)]; 
    [name setBackgroundColor: color]; 
    [name setTitle:title forState:UIControlStateNormal]; 
    name.titleLabel.font = [UIFont systemFontOfSize:16]; 
    name.titleLabel. numberOfLines = 0; // Dynamic number of lines 
    name.titleLabel.lineBreakMode = UILineBreakModeWordWrap; 
    name.titleLabel.textColor = [UIColor blackColor]; 

    [myView addSubview:name]; 
} 

及びメソッドを呼び出す

[self makeButton:JDLabel 
    titleOfButton:@"JD" 
    buttonColor:[UIColor redColor]]; 

方法は、クラスの先頭にヘッダーファイルとボタンで宣言されています。

+0

このメソッドを呼び出した後、そのJDLabelで何かしていますか?あなたがこのメソッドを書いたように、この "名前"パラメータはまったく役に立たず、削除することができます。メソッドを呼び出した後、パラメータJDLabelにボタンが必要な場合は、より良い方法があります。 –

+0

迅速な対応をありがとう。あなたと@hemantに答えるために、私はプログラムで作成しなければならなかった+10個のボタンを持っています。私が周りを遊んでいるARアプリのその部分は、必要に応じてボタンを別の方法からのビューの中心に置いています。これを行う主な理由は、コードを整理して後でボタンを追加しやすくすることです。 – sjhtaylor

+0

さて、あなたがやっていることは、正しいことです。 "myView"がnilでなく、正しいビューであれば、デバッグを試みてください。そして、指摘されたようにいくつかの問題があります。あなたは常にメソッドのメモリリークを持ってARCを使用しない限り、ボタンの同じ位置を使用する "名前"パラメータは無用です、あなたは新たに作成されたボタンへの直接の参照を持っていない、ボタンに追加されたターゲットはありません...あなたが始めるための答えとしていくつかのコードを投稿してください。 –

答えて

0

これはいくつかのコードです。これはあなたのビューコントローラに貼り付けて、通常はあなたが望むビューに置くが、 "self"に変更するか、または自分が参照している限り任意のビューに変更すれば動作します。単に "viewDidLoad"の "addSomeButtons"を呼び出すか、いくつかのターゲットとして呼び出します。

- (void)buttonPressed:(UIButton *)sender { 
    NSLog(@"button %d pressed", sender.tag+1); 
} 
- (void)makeButtonWithtitle:(NSString *)title andColor:(UIColor *)color atPositionIndex:(NSInteger)index {  
    const CGFloat buttonHeight = 60.0f; 
    UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(.0f, buttonHeight*index, 300.0f, buttonHeight)];  

    button.tag = index; 
    [button setAlpha:(0.5)]; 
    [button setBackgroundColor: color]; 
    [button setTitle:title forState:UIControlStateNormal]; 
    button.titleLabel.font = [UIFont systemFontOfSize:16]; 
    button.titleLabel. numberOfLines = 0; // Dynamic number of lines 
    button.titleLabel.lineBreakMode = UILineBreakModeWordWrap; 
    button.titleLabel.textColor = [UIColor blackColor]; 
    [button addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside]; 
    [self.view addSubview:button]; 
    [button release]; 
} 
- (void)addSomeButtons { 
    for(int i=0; i<10; i++) { 
     [self makeButtonWithtitle:[NSString stringWithFormat:@"button %d", i+1] andColor:[UIColor greenColor] atPositionIndex:i]; 
    } 
} 

とにかくあなたがしようとしていることは非常に一般的で非常に可能です。例えば、私はこれまでインターフェイスビルダーを使用したことはありません。

+0

お時間をありがとう、私が必要なもの – sjhtaylor

0

他のボタンから別のタグ値を設定するには、別のタグ値を設定します。 button.tag = 1;ここ

あなたは.M

button.tag = i; 

での.h

int i ; 

に のような変数を使用して別のボタンに

UIButton *name = [UIButton buttonWithType:UIButtonTypeRoundRectangle]; 
name.frame = CGRectMake(10*i,10*i,150,100); 

i++; 
+0

ありがとう、私はタグを見ていきます – sjhtaylor

0

UIButtonsをボタン一つのフレームサイズを設定する必要があります作成されているが、お互いにオーバーラップしている..あなたはちょうどフレームウィットを変更する必要がありますhすべてのメソッド呼び出しも。400,400は画面からボタンを作成します。私は何をしたいと思うのでしょうか?160,240のようなものを試してください。

0

ボタンをInterface Builderで作成することを検討してくださいはるかに便利なサイズを設定するため、色など

その後、のいずれかを介してボタンあたりIBOutletか、「グループ」1つのアウトレットでUIView秒の数をしてみましょうIBOutletCollection、としてコード内のボタンを参照することができます:

  • InterfacebuilderでUIButtonを作成するだけです最初に表示されないように、次のをメインビューに配置します。
  • CMD + ClickすべてのボタンとCTRL + Dragあなた.hファイルへ、最終的にあなたのコードに次のようになりますIBOutletCollection作成:

    @property (strong, nonatomic) IBOutletCollection(UIButton) NSArray *allMyButtonsFromIB; 
    
  • は今、あなたはself.allMyButtonsを経由して、実装のボタンにアクセスすることができ、ありますNSArray

0
-(void)createButtonWithTitle:(NSString*)title andColor:(UIColor*)color andFrame:(CGRect)frame{ 

    UIButton *lButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
    [lButton setFrame:frame]; 
    [lButton setTitle:title forState:UIControlStateNormal]; 
    lButton.titleLabel.font = [UIFont systemFontOfSize:16]; 
    [lButton setBackgroundColor:color]; 

    [self.view addSubview:lButton]; 
    lButton = nil; 
} 

フレームの値を変更して、ボタンをビューの適切な位置に置くことができます。

関連する問題