将一个视图的字符串值传递给iphone中其他视图中的标签时返回null?

时间:2012-10-02 10:34:38

标签: ios cocoa-touch nsstring

我必须将一个字符串值从一个视图传递给另一个视图中的标签。但是当我做这样的事情时,标签值为空。无法理解我哪里出错了?这是我的代码:

在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的值。为什么我不理解。我哪里错了?

1 个答案:

答案 0 :(得分:0)

在添加子视图之前将值传递给IBOutlet UILablel时没有分配(没有内存引用)。

更好的方法是在添加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。