我有一个UISwitch
,它包含在原型单元中,该原型单元是UITableViewCell
的子类。这个原型单元格包含一个UISwitch
,当应用程序最初启动时,我希望将其初始状态设置为false,以及每当用户更改时希望存储哪个状态。我的问题是试图从UITableViewController
中获得对UISwitch
的引用,此时UISwitch
包含在原型单元内。尝试在Swift中设置UISwitch的初始状态
这里是我的相关代码:
里面我AppDelegate
我有以下几点:
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
if !NSUserDefaults.standardUserDefaults().boolForKey("isNotFirstLaunch") {
//Set switchState to false and isNotFirstLaunch to true
NSUserDefaults.standardUserDefaults().setBool(false, forKey: "switchState")
NSUserDefaults.standardUserDefaults().setBool(true, forKey: "isNotFirstLaunch")
//Sync NSUserDefaults
NSUserDefaults.standardUserDefaults().synchronize()
}
里面我UITableViewController
:
override func viewDidLoad() {
//this line below is commented out because I don't have a reference to the UISwitch in question, but I imagine it would be something along these lines:
//switchState.on = NSUserDefaults.standardUserDefaults().boolForKey("switchState")
}
//This block of code I was able to connect to the UISwitch directly in the storyboard file, so I know this works.
@IBAction func stateChanged(withSwitchState switchState: UISwitch) {
if switchState.on {
NSUserDefaults.standardUserDefaults().setBool(switchState.on, forKey: "switchState")
} else {
NSUserDefaults.standardUserDefaults().setBool(switchState.on, forKey: "switchState")
}
}
而且我班为原型细胞内:
class SwitchTableViewCell: UITableViewCell {
@IBOutlet weak var switchControl: UISwitch!
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
self.switchControl.layer.cornerRadius = 16
}
}
我需要对原型单元格内的UISwitch
的引用,它在我的UITableViewController
类中,使得它的初始状态设置为false,如我的AppDelegate
类中所建立的,并且每当用户更改UISwitch
的状态。
设置状态在cellforrow方法 –
如何内我在“cellForRowAtIndexPath”中获得对自定义单元类的引用吗?当我这样做: 如果单元格是SwitchTableViewCell { ... } 我无法使用“单元格”来获取其类中的UISwitch参数的引用。 – syedfa
@syedfa检查我的答案,以获得对你的牢房的重视。 –