我是编程的新手。任何帮助都不胜感激。
它在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];
我并没有真正到达我犯错的地方......
答案 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];