2012-05-25 13 views
7

ios - プログラムでコード化されたUIButtonが表示されません。

こんにちは、

私は私がこのコードの右のトラックにする必要があります読んで、他のSOの質問で見たものをプログラム的に私のUIViewControllerにしてからUIButtonやその他の項目を追加しようとしています:

- (void)viewDidLoad 
{ 
[super viewDidLoad]; 



UIButton *backButton = [UIButton buttonWithType:UIButtonTypeCustom];  
backButton = [[UIButton alloc] init]; 
backButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
backButton.frame = CGRectMake(10, 25, 150, 75); 
backButton.titleLabel.font = [UIFont fontWithName:@"Helvetica-Bold" size:15]; 
backButton.titleLabel.text = @"Back"; 
[self.view addSubview:backButton]; 


// Do any additional setup after loading the view. 
} 

コードがviewDidLoadメソッドに配置されていて、表示されない - 私は何が間違っているのですか?

私は背景の色を変更し、viewDidLoadに入れたいときはうまく動作します。

乾杯Jeff

+0

uは私は完全な方法を示すために、コードを更新しました – CStreel

+0

あなたのviewDidLoadコードを提出することができます - 私はちょうどので、練習していますそれはかなり空です:-) –

+0

ボタンの3つのインスタンスを作成しています。 2つは不要です。 –

答えて

23

を呼び出します。

丸い矩形ボタン システムボタンを使用して、それが表示されるかどうか試してみてください。テキストを正しく設定してください。私はまた、フォントの設定を削除します。ちょうどフォントに問題がある場合は入れてください。

// backButton = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
backButton = [UIButton buttonWithType:UIButtonTypeSystem]; 
backButton.frame = CGRectMake(10, 25, 150, 75); 
[backButton setTitle:@"Back" forState:UIControlStateNormal]; 
[self.view addSubview:backButton]; 

更新:UIButtonTypeRoundedRectは廃止beedました。

+0

合意されたUIButtonTypeRoundedRectは、タイトルを表示するのに必要な情報を提供しました。しかし、現在では非推奨になっているため、代わりにUIButtonTypeCustomまたはSystem(ナビゲーション関連の場合)を使用する必要があります(https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIButton_Class/#//)。 apple_ref/doc/c_ref/UIButtonType – bitsand

3

ボタンのタイトルを間違って設定しています。使用:

- (void)setTitle:(NSString *)title forState:(UIControlState)state 

また、あなたのボタンを3回初期化する必要はありません。 2行目と3行目を削除します。

0

は別に問題から、

UIButtonTypeCustomコメントで指摘空白のボタンを作成します。

イメージをボタンとして使用したいが、setImage:ボタンのタイトルをオーバーライドすることに注意してください。したがって、BackgroundImageを設定する必要があります。

あなたのボタンはそれだけで「表示されない」

ので

使用UIButtonTypeRoundRect(それは多少異なる場合があります)

するか、そこに実際にそこにあるあなたにイメージをしたい場合ボタン。

使用UIButtonTypeCustom コールsetBackgroundImage:その後、私はあなたが正しくボタンを挿入することができると思うが、それは何のバックグラウンドを持っていないとテキストが表示されていないので、それを見ることができないsetTitle:forState:

4

静的メソッドbuttonWithTypeを使用してボタンを作成しましたが、そのボタンのメモリも割り当てられています。あなたはボタンタイプを使用する必要が

UIButton *backButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
backButton.frame = CGRectMake(10, 25, 150, 75); 
backButton.titleLabel.font = [UIFont fontWithName:@"Helvetica-Bold" size:15]; 
backButton.titleLabel.text = @"Back"; 
[self.view addSubview:backButton]; 
0

がRoundedRectである我々は、背景色

[UIButton buttonWithType: UIButtonTypeRoundedRect]; 

を見ることができ、それが役立つことを願っています!

1

dispatch_afterを使用して後でブロックを呼び出すことができます。ここでは最初のビューがロードされ、0.1秒以内にすべてのボタンが表示されます。 Xcodeは、dispatch_afterの入力を開始し、次への自動補完するためにEnterキーを押し:

を、これは試してみてください:

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ 

    UIButton *backButton = [UIButton buttonWithType:UIButtonTypeCustom];  
    backButton = [[UIButton alloc] init]; 
    backButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
    backButton.frame = CGRectMake(10, 25, 150, 75); 
    backButton.titleLabel.font = [UIFont fontWithName:@"Helvetica-Bold" size:15]; 
    backButton.titleLabel.text = @"Back"; 
    [self.view addSubview:backButton]; 

}); 
+1

こんにちは@Nirav - コードをお寄せいただきありがとうございますが、おそらくその目的が答えに関係しているかどうかの説明を追加してください。あなたはもっとpoplularになります:-)また、コードブロック内にすべてのコードを入れてください。 –

+1

彼は、ビューがロードされてからその時間に0.1秒後に呼び出されるようにスレッドを設定する方法を示しています。私はフルスピードで動作しないコードになっていましたが、コードをシングルステップで実行すると、これが見つかりました。 – netskink

関連する問題