2012-03-16 6 views
0

UILabelの値をコードで動的に設定するクイズを作成しようとしています。 私は以前これをうまくやったことがありますが、何らかの理由で今回はうまくいきません。私はそれがこのアプリの構造が異なるためだと思う。私は別の修正を試みたが、それを動作させることができなかった。UILabelの値を動的に設定する

私のアプリの設定方法は、セグメント化されたコントロールを持つビューを持つビューコントローラがあります。

- (void)viewWillAppear:(BOOL)animated{ 

firstNumberString = [NSString stringWithFormat:@"%d",arc4random() % 10]; 
firstNumberLabel.text = firstNumberString; 
secondNumberLabel.text = secondNumberString; 
[super viewWillAppear:animated]} 

私のコンセントが接続されていると:そのサブビューのビューコントローラは、このようにそのビューを表示

menuTable.hidden = YES; 
additionPracticeController *additionPractice = [[additionPracticeController alloc] 
                 initWithNibName:@"additionPractice" 
                 bundle:nil]; 
    self.addPracticeController = additionPractice; 
    [self.view insertSubview:additionPractice.view atIndex:0]; 
    [additionPractice release]; 

:あなたがセグメント化されたコントロールのスイッチのいずれかを押すとき、それはこのようなサブビューを挿入します私はそれらを静的にペン先から設定することで値を得ることができます(それは私が望むものではありませんが)。 firstNumberStringをすべての種類の値と同じに設定しようとしましたが、コードで値を設定すると何も表示されません。

誰かがこの問題を解決するのに役立つと本当に感謝しています。

+0

'firstNumberString'はプロパティですか?象牙?このクラスの文字列で何か他のことをしていますか? – MishieMoo

+0

NSString * firstNumberString = ...を定義していますか?それともあなたのコードのプロポーティですか? firstNumberLabel。どのように合成しましたか? (_が付いていてもいなくてもかまいません)? – Canopus

+0

firstNumberStringはNSStringで、私は正しく動作するようになったアプリで何を行ったのか(非原子、コピー)としてプロパティを宣言しました。私がやっているのは、それを使ってラベルに表示されているものを設定することだけです。 –

答えて

0

Interface Builderでラベルが接続されているようです。私はあなたが間違っていることを正確に知るために、より多くのコードを見る必要があります。ラベルにプロパティを使用していることを確認してください。以下のコードは、この仕組みの簡単な例です。

ViewController.h

#import <UIKit/UIKit.h> 

@interface ViewController : UIViewController 
{ 
    IBOutlet UILabel *_displayMessage; 
} 

@property (nonatomic, retain) UILabel *displayMessage; 

@end 

ViewController.m

#import "ViewController.h" 

@implementation ViewController 

@synthesize displayMessage = _displayMessage; 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    self.displayMessage.text = @"Text Changed!"; 
} 

- (void)viewDidUnload 
{ 
    self.displayMessage = nil; 
    [super viewDidUnload]; 
} 

- (void)dealloc 
{ 
    [_displayMessage release]; 
    [super dealloc]; 
} 

@end 

代わりのすぐ下に、このメソッドを実装するクラスのUicontrolのサブクラスを作ります。ユーザーのヒットは行われた場合や、キーパッドを返し、ユーザーがテキストフィールドの外でタップしたときにテキストフィールドを消すようにするには

- (BOOL)textFieldShouldReturn:(UITextField *)textField 
{ 
    [textField resignFirstResponder]; 
    return YES; 
} 

を辞任します。

UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self 
                     action:@selector(dismissKeyboard)]; 

[self.view addGestureRecognizer:tap]; 

クラス内で行われ、この方法を:こののviewDidLoadで

場所

-(void)dismissKeyboard 
{ 
     [aTextField resignFirstResponder]; 
} 

また、あなただけの画面をタップspeficallyはなく、別のボタンからテキストフィールドを却下する場合。次に、ボタン内からこれを呼び出します。

[your_textfield_name resignFirstResponder]; 
+0

私のラベルは、プロパティとして宣言されています。それは問題ではありません。 (私は上記の情報を追加して別のコメントを追加しました) –

+0

私はそれをコード化してユーザーが完了できるようにしていますが、ユーザーがビューの別の部分をタップするとキーボードを閉じることもできます。それは絶対に必要というわけではありませんが、iosユーザーが数字パッドを持っているときに期待するようになったと考えています。 –

+0

編集を確認してください。あなたがそれに従えば、あなたが何を望むかにかかわらずテキストフィールドを却下することができるはずです。 – Vikings

関連する問題