1

私は iOS が初めてで、ViewDidLoad() 関数のテキストを更新したいと考えています。

これは私のボタン機能です。ボタンをクリックするとアニメーションが発生し、値「1」が「resultText.text」に追加されます

   - (IBAction)oneButton1:(id)sender {
    oneBtn2.userInteractionEnabled = YES;
    CGRect frame = oneBtn1.frame;
    CGRect frame1 = reffButton.frame;
    frame.origin.x = frame1.origin.x; 
    frame.origin.y = frame1.origin.y; 

    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration: 3.0];

    [UIView animateWithDuration:3.0 animations:^{
        [oneBtn1 setTransform:CGAffineTransformMakeScale(.4, .4)];
    } completion:^(BOOL finished) {
        oneBtn1.hidden = YES;
        price = [resultText.text intValue];

        [resultText setText:[NSString stringWithFormat:@"%i", price+1]];

      }];
    oneBtn1.frame = frame;
    [UIView commitAnimations];

}

問題: 上記のテキスト値は 1 ですが、ViewDidLoad では 0 です。

 - (void)viewDidLoad
 {
[super viewDidLoad];

 NSLog(@"%@", resultText.text); // output is 0 instead of 1;

}

ViewDidLoad関数でテキスト値を更新する方法を誰か教えてください...

4

3 に答える 3

7

ViewDidLoad は、オブジェクトの作成時に 1 回だけ呼び出します。そのため、ViewDidLoad.ViewDidLoad を使用してパラメーターを初期化し、オブジェクトの作成時に初期設定を設定することはできません。

于 2013-09-23T06:32:34.277 に答える
1

これは、ビューが読み込まれるたびに textField の新しいオブジェクトが作成されるためです。そのため、以前のものを取得することができません (その新しい textField は古いものではないため)。たとえば、使用できる場所にテキストを保存する必要があります。NSUserDefaults

SetText

NSString *result=[NSString stringWithFormat:@"%i", price+1];

[resultText setText:];

//Also set it to NSUserDefaluts
[[NSUserDefaults standardUserDefaults] setValue:result forKey:@"key"];
[[NSUserDefaults standardUserDefaults] synchronize];

テキストを取得

- (void)viewDidLoad
{
    [resultText setText:[[NSUserDefaults standardUserDefaults] valueForKey:@"key"]];
    NSLog(@"%@", resultText.text); 
}

編集

ボタンクリック後にアニメーションを作ることができるので、ボタンクリックイベントでこのメソッドを呼び出します

-(void)animateImage
{
    if ([resultText.text isEqualToString:@"3"]) {
        //make your animation
    }
}
于 2013-09-23T06:45:45.793 に答える
0

メソッドを使用してそれを行うことができます

     - (void)updateLabel {
        oneBtn2.userInteractionEnabled = YES;
        CGRect frame = oneBtn1.frame;
        CGRect frame1 = reffButton.frame;
        frame.origin.x = frame1.origin.x; 
        frame.origin.y = frame1.origin.y; 

        [UIView beginAnimations:nil context:nil];
        [UIView setAnimationDuration: 3.0];

        [UIView animateWithDuration:3.0 animations:^{
            [oneBtn1 setTransform:CGAffineTransformMakeScale(.4, .4)];
        } completion:^(BOOL finished) {
            oneBtn1.hidden = YES;
            price = [resultText.text intValue];

            [resultText setText:[NSString stringWithFormat:@"%i", price+1]];

          }];
        oneBtn1.frame = frame;
        [UIView commitAnimations];

   }


     - (void)viewDidLoad
     {
    [super viewDidLoad];
     [self updateLabel];
     NSLog(@"%@", resultText.text); // output is 0 instead of 1;

    }
于 2013-09-23T09:53:25.857 に答える