我在addViewController中有NSString值,我想在DetailsViewController的UILabel中显示这个值

时间:2012-11-22 09:56:30

标签: iphone nsstring uilabel

我是编程的新手。任何帮助都不胜感激。

它在AddViewController中。

NSLog(@"Am Currently at %@",locatedAt);

DetailsOfPeopleViewController *details=[DetailsOfPeopleViewController alloc];
   details.testAddressStr=[NSString stringWithFormat:@"%@",locatedAt];

details.testAddressStr在这里显示值,但它没有将此值传递给DetailsViewController。

locatedAt的值显示在AddViewController中。当我尝试在DetailsViewController类的UILabel中显示此值时,它不会在标签中显示该值。

在DetailsViewController.h中:

NSString *testAddressStr;

@property(nonatomic,strong) NSString *testAddressStr;
@property(nonatomic,retain)IBOutlet UILabel *addressLabel;

在DetailsViewController.m中:

 [addressLabel setText:testAddressStr];

我也是这样尝试的:

addressLabel.text=[NSString stringWithFormat:@"%@",testAddressStr];

我并没有真正到达我犯错的地方......

5 个答案:

答案 0 :(得分:1)

您可以使用NSUserDefault

发送数据

<强>的SetValue

NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:[NSString stringWithFormat:@"%@",txtView.text]; forKey:@"testPersonNotesStr"];
[defaults synchronize];

<强>的GetValue

testPersonNotesStr = [[NSUserDefaults standardUserDefaults] objectForKey:@"testPersonNotesStr"];
NSLog(@"PERSON NOTE is........ %@",testPersonNotesStr);  

<强>:)

答案 1 :(得分:0)

问题是由于您正在分配一个自动释放的变量。它在您在detailView上显示之前已发布。所以你需要保留它。或者您需要分配testAddressStr

只需替换此行:

details.testAddressStr=[NSString stringWithFormat:@"%@",locatedAt];

<强>与

details.testAddressStr = [[NSString stringWithFormat:@"%@",locatedAt] retain];

details.testAddressStr = [[NSString alloc] initWithString:[NSString stringWithFormat:@"%@",locatedAt]];

答案 2 :(得分:0)

保留字符串 locatedAt ,您已将其初始化。 像这样

[locatedAt retain];

享受编程

答案 3 :(得分:0)

Objective-C中没有“对象的范围”这样的东西。范围规则与对象的生命周期无关 - 保留计数就是一切。

您通常需要声明实例变量的所有权。请参阅Objective-C内存管理规则。使用保留属性,您的财产设置者声明拥有新值,并放弃旧值的所有权。使用assign属性,周围的代码必须这样做,这在责任和关注点分离方面同样糟糕。您将使用assign属性的原因是您无法保留该值(例如BOOL或NSRect等非对象类型),或者保留它会导致不必要的副作用。

顺便说一下,在NSString的情况下,正确的属性通常是复制。这样,如果有人传入NSMutableString(它是有效的 - 它是一种NSString),它就无法从你的下方改变。

答案 4 :(得分:0)

尝试替换

 [addressLabel setText:testAddressStr];

以下

 [addressLabel setText:self.testAddressStr];