我必须将一个字符串值从一个视图传递给另一个视图中的标签。但是当我做这样的事情时,标签值为空。无法理解我哪里出错了?这是我的代码:
在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的值。为什么我不理解。我哪里错了?
答案 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。