UserDefaults.standardを使いリストを保存しようとしています。何のリストかと言うと、UIButtonを継承した独自クラスのリストなのですが、これがエラーになります。UserDefaults.standardは IntやStringと行った型しか保存できないのでしょうか?以下の様にしました。UIbuttonのリストを以下の様に保存したい場合は別の方法を試すしかないのでしょうか?
Swift
1 2var Buttons = [UIButton]()このリストを保存したい 3var Buttontitles = [String]() 4 5// UIButtonを継承した独自クラス 6class MyButton: UIButton{ 7 let x:Int 8 let y:Int 9 init(x:Int,y:Int,frame:CGRect){ 10 self.x = x 11 self.y = y 12 super.init(frame:frame) 13 } 14 required init(coder aDecoder: NSCoder) { 15 fatalError("init(coder:) has not been implemented") 16 } 17 } 18 19func create_buttons(button_name: String){ 20 21 Button_num += 1 22 if Button_num % 2 == 0{ 23 24 Button_num_row += 1 25 26 }else{ 27 Button_num_row = 0 28 Button_num_col += 1 29 } 30 31 32 var btn : UIButton = MyButton( 33 x:Button_num_row, 34 y:Button_num_col, 35 frame:CGRect(x:CGFloat(50+Button_num_row*150) ,y:CGFloat(Button_num_col)*100,width:100,height:50)) 36 37 btn.setTitle(button_name, for:UIControlState.normal) 38 //ボタンを押したときの動作 39 btn.addTarget(self,action:#selector(pushed),for: UIControlEvents.touchUpInside) 40 //見える用に赤くした 41 btn.backgroundColor = UIColor.red 42 43 btn.showsTouchWhenHighlighted = true 44 btn.layer.shadowOpacity = 0.5 45 Buttontitles.append((btn.currentTitle)!) 46 Buttons.append(btn) 47 //画面に追加 48 view.addSubview(btn) 49 50 //以下で保存しようとしています!!!! 51 let defaults = UserDefaults.standard 52 defaults.set(Buttons, forKey: "Buttons")//UIButton型が保存できない?因みにストリングのリストでdefaults.set(Buttontitles, forKey: "Buttons")だとできる 53 54 55 56 57 } 58 59
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/09/02 23:35