1

この質問が 100 回ほど聞かれたことは知っていますが、何が間違っているのかわかりません。

これは私の 2 番目の iOS アプリです。ViewControllerA の Button を押して、ViewControllerB の Label を変更したいと考えています。

  1. ボタン ( ViewControllerA)からストーリーボードにセグエを作成し、 ViewControllerB「TestSegue」と呼びました。
  2. 私の中に書い#import "ViewControllerB.hViewControllerA.h
  3. ViewControllerA.m にこのコードを書きました:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{

if([segue.identifier isEqualToString:@"TestSegue"]){

ViewControllerB *controller = (ViewControllerB *)segue.destinationViewController;
controller.TestLabel.text = @"TEST!";}}

In my ViewControllerB nothing happens with the TestLabel...

Can anybody see what I did wrong?

Thanks in advance

Edit: Works now thanks to rpledge.

New Code:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{

if([segue.identifier isEqualToString:@"TestSegue"]){

ViewControllerB *controller = (ViewControllerB *)segue.destinationViewController;
controller.TestString = @"TEST!";}}
4

2 に答える 2

1

これはおそらく、prepareForSegue の後に発生する viewDidLoad が実行されるまで、TextLabel UI 要素が作成されないためです。

とにかく、ビューの UI 要素を公開するのは好きではありません。NSString* の @property を目的のビュー コントローラーに追加し、viewDidLoad で UILabel.text を設定することをお勧めします。

于 2013-03-02T17:46:05.417 に答える
0

コントロールではなく、インスタンス変数に割り当てます。

@property (nonatomic) NSString *var;

そして、viewDidLoad でこれをコントロールに割り当てます。

于 2013-03-02T17:48:36.570 に答える