2017-03-22 28 views
1

我正面临有关开关按钮默认值的问题。如果没有使用开关按钮,Xcode会给出错误“意外地发现零,同时展开可选值”。如果不使用开关按钮,我需要将默认值设置为true或false。我发现了一些关于这个问题的文章,但他们没有为我工作。如何为故事板初始化的开关按钮设置默认布尔值

我的切换按钮通过故事板初始化:

@IBAction func FußballPreferenzSwitch(_ sender: UISwitch) { 

    if (sender.isOn == true) { 

     FußballPreferenz = "Ja" 
    }else { 

     FußballPreferenz = "Nein" 
    } 
} 

下面的解决方案并没有制定出适合我,因为我没有钥匙,或者至少我不知道密钥是什么。

在他们的applicationDidFinishLaunching建议写入以下代码:

let userDefaults = UserDefaults.standard 
let defaultValues : [String : Any] = ["key" : false] 
userDefaults.register(defaults: defaultValues) 

如何,我需要更改下面的代码在我的目的使用它? 或者还有解决这个问题的其他方法吗?

+1

*未使用*是什么意思?您可以直接在Interface Builder中设置默认值。 – vadian

+0

这意味着,该按钮没有被触摸。当按钮没有被触摸时,开关按钮的布尔值应该为真,以便变量“FußballPreferenz”等于=“Ja”。 – AlexVilla147

+0

目前尚不清楚你要完成什么。您想在切换后保留该值吗?为什么以及何时得到*意外发现... *错误? – vadian

回答

1

让你的交换机的IBOutlet,然后在viewDidloadviewDidAppear(其中以往任何时候都要求要求)

if uiSwitch.isOn { 
    FußballPreferenz = "Ja" 
} else { 
    FußballPreferenz = "Nein" 
} 

这保证了无论在故事板上设置的默认值是反映在您的didload/didappear变量甚至如果用户没有更改开关的值。

+0

干杯队友!这确实有效。还有一个问题。你有任何想法如何解决分段控制相同的问题? – AlexVilla147

0

只是因为它是在这里情况下别人(新手,因为我是)正在寻找一个片段:

在你的代码(类定义)的顶部添加:

@IBOutlet weak var switchImageBeingDisplayed: UISwitch! 

和进一步向下定义按钮:

@IBAction func switchImageBeingDisplayedChanged(_ sender: Any) { 
    if switchLockLanguages.isOn { 
     image1.isHidden = true} 
    else { 
     image2.isHidden = false 
    } 
} 
相关问题