0

あるビューから別のビューのラベルに文字列値を渡す必要があります。しかし、私がそのようなことをするとき、ラベル値はnullです。私がどこで間違っているのか理解できませんでしたか?これが私のコードです:

FirstViewController.mで

SecondViewController *gp=[[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:[NSBundle mainBundle]];
gp.d.text = [NSString stringWithFormat:@"%@", nam];
[self.view addSubview:gp.view];
[gp release];

SecondViewController.hで

@interface SecondViewController : UIViewController<NSXMLParserDelegate>
{
    UILabel *d;
}

@property (nonatomic,retain) IBOutlet UILabel *d;

SecondViewController.m @synthesize d;

- (void)viewDidLoad
{
     NSString *urlString1 = [NSString stringWithFormat: @"http://192.168.0.108:8732/Design_Time_Addresses/ICloudServices/AppointmentService/json/GetProviders/?cid={%@}", [d text]];
}

ただし、ここではdの値は渡されません。なぜ私は理解していません。どこが間違っているのですか?

4

1 に答える 1

0

サブビューを追加する前にIBOutletUILablelに値を渡すときに、割り当てられません(メモリ参照がありません)。

したがって、より良い方法は、subViewを追加した後に値を渡すことです。

[self.view addSubview:gp.view];
gp.d.text=[NSString stringWithFormat:@"%@",nam];

編集:より良い方法は、文字列を渡すことです:

Create property of NSString in SecondViewController say yourString.

SecondViewController *gp=[[SecondViewController alloc]initWithNibName:@"SecondViewController" bundle:[NSBundle mainBundle]];
gp.yourString = [nam retain];
[self.view addSubview:gp.view];

SecondViewControllerのviewDidLoadでこれを行います:

self.d.text = self.yourString;

要件に応じて、どこでもyourStringを使用します。

于 2012-10-02T10:40:41.603 に答える