【问题标题】:How would I save a UIButton's properties and load with a button? [duplicate]如何保存 UIButton 的属性并使用按钮加载? [复制]
【发布时间】:2011-09-07 17:45:54
【问题描述】:

可能重复:
How can I save and load the alpha values of a UIButton in an app?

我想保存 UIButton 的状态(例如它的 alpha 值以及它是否隐藏),然后在用户退出并重新加载应用程序时加载。

我用 NSUserDefaults 尝试了一些代码,但没有成功。

有人可以提供一些示例代码,以便我可以保存和加载按钮的状态吗?

谢谢,

詹姆斯

【问题讨论】:

    标签: ios xcode load uibutton save


    【解决方案1】:

    Shaharyar的回答有关(我不知道如何评论):

    在这种情况下,您需要使用 NSNumber。

    [[NSUserDefaults standardUserDefaults] setValue:[NSNumber numberWithFloat:SOME_FLOAT] forKey:KEY];

    因为float 不是一个对象,而NSNumber 是一个。

    已编辑:

    1) 确保在应用程序首次运行后创建默认值: 在您的 AppDelegate 的 initialize-method 中:

    NSUserDefaults *defaults  = [NSUserDefaults standardUserDefaults];
    NSDictionary *appDefaults = [NSDictionary dictionaryWithObjectsAndKeys:
                                 [NSNumber numberWithFloat:SOME_FLOAT], @"YOUR_KEY", 
                                 nil];
    [defaults registerDefaults:appDefaults];
    

    2) 更新后的默认值:

    NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
    [prefs setFloat:FLOAT_VALUE forKey:@"YOUR_KEY"];
    [prefs synchronize];
    

    3) 读取默认值:

    NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
    float FLOAT_VALUE = [prefs floatForKey:@"YOUR_KEY"];
    

    【讨论】:

    • 是的,但我不想将 alpha 设置为 1,我希望它自动从 examplebutton.alpha 中获取信息,因为它可能会有所不同。
    • 抱歉,我不太明白你的意思。您可以简单地将 alfa 的值存储为 NSNumber,然后读取此浮点值。并且不要忘记先注册您的默认值
    【解决方案2】:

    你能发布一些代码吗?

    NSUserDefaults 是存储此类信息的地方..

    假设:

    您在设置值后是否致电[NSUserDefaults synchronize]


    代码:

    // Setting a value
    [[NSUserDefaults standardUserDefaults] setValue:VALUE forKey:KEY];
    [[NSUserDefaults standardUserDefaults] synchronize];
    
    // Getting a value
    NSString *var1 = [[NSUserDefaults standardUserDefaults] valueForKey:KEY];
    

    在你的情况下是:

    // Setting a value
    [[NSUserDefaults standardUserDefaults] setFloat:VALUE forKey:KEY];
    [[NSUserDefaults standardUserDefaults] synchronize];
    

    【讨论】:

    • 我确实使用了 [alphadefaults 同步]。这是我使用的一些代码:pastie.org/2498420。当我输入这段代码时,按钮根本没有显示......我尝试添加 cross1.alpha = 0.3;在 viewDidLoad 上,但没有任何区别......
    • 我输入了; [[NSUserDefaults standardUserDefaults] setValue:cross1.alpha forKey:@"Cross1Alpha"];但它说;语义问题:将“CGFloat”(又名“float”)发送到不兼容类型“id”的参数
    • setValue 要求您发送 ID 类型的引用(实际对象) - 我只是尝试自己设置 alpha 属性 0.3 工作正常。看来您的视图对象未正确初始化..
    • 那么我现在需要做什么?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-27
    相关资源
    最近更新 更多