在两个视图之间共享NSString

时间:2011-06-27 18:23:41

标签: ios xcode ios4

我需要在我的应用程序中的两个视图之间共享一个字符串。当用户结束游戏时,分数被转换为字符串。然后我需要将该字符串传输到另一个视图控制器,在那里我显示分数。我有一个标签设置,即使我正在导入创建字符串的头文件,但除了视图之外的所有内容都无法识别字符串。任何帮助都会很棒,谢谢。

这是我的视图控制器,其中创建了字符串

NSString *scoreString = [NSString stringWithFormat:@"%d", score];

这是我尝试在不同的视图控制器中显示字符串的地方

- (void)viewDidLoad {
    self.scoreString = score.text;

    [super viewDidLoad];
}

2 个答案:

答案 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还会处理intBOOLNSArray等。请查看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"];