UITableViewCell
のサブクラスであるPrototypeセルに含まれているUISwitch
があります。このプロトタイプのセルにはUISwitch
が含まれています。この初期状態は、アプリが最初に起動するときにfalseに設定したい場合と、ユーザーが変更するたびに状態を保存したい場合です。私の問題は、UISwitch
がプロトタイプのセルの中に含まれているときに、UITableViewController
からUISwitch
への参照を取得しようとしています。私は以下の持っている私のAppDelegate
インサイドSwiftでUISwitchの初期状態を設定しようとしています
:ここ
は私の関連するコードであるインサイド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
への参照が必要です。AppDelegate
クラスの初期状態はfalseに設定されています。 UISwitch
の状態です。
のようなあなたのswicthがcellforrow方法はどのよう –
内部の状態を設定するアクセスすることができ
次のように「cellForRowAtIndexPath」内のカスタムセルクラスへの参照を取得しますか?私はこれを行うとき: をセルがSwitchTableViewCell { ... } であれば、私はそれのクラス内UISwitchパラメータへの参照を取得するには、「セル」を使用することができませんでしだ。 – syedfa
@syedfa自分のセルへの謝辞を得るために私の答えをチェックしてください。 –