我需要在我的应用程序中的两个视图之间共享一个字符串。当用户结束游戏时,分数被转换为字符串。然后我需要将该字符串传输到另一个视图控制器,在那里我显示分数。我有一个标签设置,即使我正在导入创建字符串的头文件,但除了视图之外的所有内容都无法识别字符串。任何帮助都会很棒,谢谢。
这是我的视图控制器,其中创建了字符串
NSString *scoreString = [NSString stringWithFormat:@"%d", score];
这是我尝试在不同的视图控制器中显示字符串的地方
- (void)viewDidLoad {
self.scoreString = score.text;
[super viewDidLoad];
}
答案 0 :(得分:5)
对于分数和类似数据,您可能需要使用NSUserDefaults
。这些可以随时从任何UIViewController访问。例如,您可以实现与这些类似的方法来保存和检索数据:
-(void)saveToUserDefaults:(NSString*)myString
{
NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults];
if (standardUserDefaults) {
[standardUserDefaults setObject:myString forKey:@"Score"];
[standardUserDefaults synchronize];
}
}
-(NSString*)retrieveFromUserDefaults
{
NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults];
NSString *val = nil;
if (standardUserDefaults)
val = [standardUserDefaults objectForKey:@"Score"];
return val;
}
NSUserDefaults
还会处理int
,BOOL
,NSArray
等。请查看the documentation或谷歌周围的示例。
答案 1 :(得分:2)
您可以使用委托或NSUserDefaults
之前被问过类似的问题:
Passing variables to different view controllers
How do I pass variables between view controllers?
[[NSUserDefaults standardUserDefaults] setObject:@"STRING HERE" forKey:@"MyKey"];
并检索
[[NSUserDefaults standardUserDefaults] objectForKey:@"MyKey"];