【问题标题】:Retrieving toggle switch value from Settings bundle从设置包中检索切换开关值
【发布时间】:2012-11-13 14:11:58
【问题描述】:

我需要在名为 background 的第一个 ViewController 的 UIImageView 中加载不同的背景图像,这取决于 Settings Bundle 中用于切换开关的设置。

在 ViewController.m 中的 -viewWillAppear 中

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
id toggleSwitchValue = [defaults objectForKey:@"PSToggleSwitchSpecifier"];
BOOL boolToggle = [toggleSwitchValue boolValue];

// setting custom back for viewController
if (boolToggle == YES) {
    [self.backGround setImage:[UIImage imageNamed:@"1.png"]];
    NSLog(@"YES");
} else if (boolToggle == NO) {
    [self.backGround setImage:[UIImage imageNamed:@"2.png"]];
    NSLog(@"NO");
}

我没有警告,但我无法设置要使用的图像。

有什么想法要解决吗?

【问题讨论】:

    标签: iphone objective-c ios xcode settings.bundle


    【解决方案1】:

    确保,如果视图是从 nib 加载的,则在 viewDidLoad 中或之后修改视图。

    【讨论】:

    • @Alexey viewDidAppear 可能没有问题,尽管 viewWillAppear 会更传统。尝试在 if 语句之前设置断点,并在调试器中键入 po self.backGround
    【解决方案2】:

    确保您的 IBOutlet 连接正确并使用 [background setImage:] 而不是点表示法。如果两者都不起作用,则您的逻辑或 userDefault 值的设置/读取存在问题。

    【讨论】:

    • 我很确定他确实在这种方法中实例化了他的视图控制器(除非目标 c isnt FIFO 语言......?)。可能是他没有实例化他的背景属性。
    • 我将所有自定义代码从这里移到 ViewController.m 中的 -viewWillAppear 中,但没有任何改变。 NSLog 显示我每次都在 else if 中。
    • CoDaFi,我在代码和 IB 中设置了这个背景 UIImageView 的 IBOutlet。刚刚检查过
    • @CodaFi:我以为代码在 appDelegate 中,我看到它在他的 viewController 中,我已经编辑了我的答案。
    • 我又检查了一遍,IB 中的所有内容都正确连接。代码与我在这里展示的相同,但每次我有 boolToggle 等于 NO,所以只加载了“2.png”。 id toggleSwitchValue = [defaults objectForKey:@"PSToggleSwitchSpecifier"] 会不会是错误的? BOOL boolToggle = [toggleSwitchValue boolValue]; ,因为toggleSwitchValue是id的类型,我把它变成了BOOL?
    猜你喜欢
    • 1970-01-01
    • 2013-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多