2017-02-07 154 views
0

好吧,所以我试图让用户翻动作弊模式开关时,它将禁用answerButton。我确实尝试将按钮设置为在底部附近禁用,但它看起来并没有做任何事情。我添加了print(“”)来查看它是否会在控制台中打印,但是没有打印。我不确定这里有什么问题。使用swift禁用其他视图控制器的按钮

我粘贴了下面的代码。

import Foundation 
import UIKit 


class SettingsController: UITableViewController { 

@IBOutlet weak var cheatSwitch: UISwitch! 



override func viewDidLoad() { 
    super.viewDidLoad() 

    cheatSwitch.isOn = UserDefaults.standard.bool(forKey: "switchState") 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 

@IBAction func saveSettings(_ sender: UISwitch) { 
    UserDefaults.standard.set(cheatSwitch.isOn, forKey: "switchState") 
    UserDefaults.standard.synchronize() 
} 

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    let mainView : ViewController = segue.destination as! ViewController 

    if cheatSwitch.isOn == true { 
     print("turn off button") 
     mainView.btnAnswer.isEnabled = false; 

    } 

    else { 
     print("turn on button") 
     mainView.btnAnswer.isEnabled = true; 
    } 


} 

}

+0

您是否仔细检查了故事板中的链接? – scb998

+0

是的按钮和链接工作。它只是不会禁用主视图上的按钮。 – winter4w

+0

它是不是在控制台上打印一条打印语句?另外,没有'performSegue'的代码显示你如何移动到'ViewController'? –

回答

1

要保存的值UISwitch的在UserDefaults状态,这样你就可以在ViewController's方法viewDidApper使用它的价值。

override func viewDidAppear(_ animated: Bool) { 
    self.btnAnswer.isEnabled = !UserDefaults.standard.bool(forKey: "switchState") 
} 

注:没有必要在你SettingsController添加prepareForSegue,因为它永远不会叫,当你按下背面的按钮NavigationController因此可以考虑将其删除。

+0

我得到使用未解决的标识mainView – winter4w

+0

@ winter4w检查编辑答案这是错字错误。使用self而不是mainView,并且不要对navigationController进行任何更改。 –

+0

现在我得到'SettingsController'类型的值没有成员'btnAnswer' – winter4w

相关问题