0

ラベルが最初にデフォルト値として設定されている 2 つのボタンを作成しようとしています。2 つのボタンは、viewDidLoad メソッドがすべてのコントロールを初期化する popOverViewController によって管理されます。また、Apple のサーバーから製品の説明と価格を含む有効な応答を受け取った後、AppDelegate によって実行される addButtons という別のメソッドもあります。

私の問題は、その方法でラベルを更新できないことです。

popOverViewController の私の viewDidLoad メソッドは次のとおりです。

- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
// Add a label to the popover's view controller.
button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
button2 = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button addTarget:self
           action:@selector(button1Week:)
 forControlEvents:UIControlEventTouchDown];
NSString *priceWeekly = [NSString stringWithFormat:@"weekly subscription"];
[button setTitle:priceWeekly forState:UIControlStateNormal];
button.frame = CGRectMake(0.0, 0.0, 200.0, 50.0);
[button2 addTarget:self
            action:@selector(button1Month:)
  forControlEvents:UIControlEventTouchDown];
[button2 setTitle:@"monthly subscription" forState:UIControlStateNormal];
button2.frame = CGRectMake(0.0, 55.0, 200.0, 50.0);
[self.view addSubview:button];
[self.view addSubview:button2];
}

そして、適切なタイミングで呼び出されると確信している私の更新ラベルメソッドは次のとおりです。

-(void)addButtons {
[self.button setTitle:@"updated label" forState:UIControlStateNormal];
[self.button2 setTitle:@"updated label 2" forState:UIControlStateNormal];
}

私のコードを確認して、ラベルを更新する正しい方法を提案してもらえますか? 基本的に、コントロールの作成とサーバーの応答の間の待機時間のため、デフォルトのラベルでコントロールを初期化したいと考えています。

アップデート:

次のようにコードを更新しましたが、確認する NSLog があるため、addButtons メソッド内のすべてが実行されますが、ボタンのタイトルは引き続き viewdidload で作成されたままです

- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
// Add a label to the popover's view controller.
UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
UIButton *button2 = [UIButton buttonWithType:UIButtonTypeRoundedRect];
ilManifestoAppDelegate *delegate = (ilManifestoAppDelegate*)[[UIApplication sharedApplication] delegate];
[button addTarget:self
           action:@selector(button1Week:)
 forControlEvents:UIControlEventTouchDown];
//    [button setTitle:priceWeekly forState:UIControlStateNormal];
button.frame = CGRectMake(0.0, 0.0, 200.0, 50.0);
[button2 addTarget:self
            action:@selector(button1Month:)
  forControlEvents:UIControlEventTouchDown];
//    [button2 setTitle:@"monthly subscription" forState:UIControlStateNormal];
button2.frame = CGRectMake(0.0, 55.0, 200.0, 50.0);
//    [self addButtons];
NSString *weekPrice = [NSString stringWithFormat:@"settimanale a %@",delegate.priceWeek];
[button setTitle:weekPrice forState:UIControlStateNormal];
[button2 setTitle:@"updated label 2" forState:UIControlStateNormal];
NSLog(@"week price %@", weekPrice);
[self.view addSubview:button];
[self.view addSubview:button2];
}

-(void)addButtons {
UIButton *button = [UIButton buttonWithType:UIButtonTypeInfoDark];
[button setTitle:@"modificato" forState:UIControlStateNormal];
[self.view addSubview:button];
NSLog(@"addButtons executed");
}
4

1 に答える 1

0

viewDidLoadと を使用buttonしてbutton2います。でaddButtonsと を使用self.buttonしてself.button2います。これらが同じボタンであることを確認しましたか?

また、ブレークポイントを配置しaddButtonsて、まだこれを行っていない場合は、実際に呼び出されるかどうかを確認してください。

コードだけでボタンを配置していない場合は、xib のボタンへのアウトレットも作成しましたか。

于 2013-02-13T08:38:57.547 に答える