質問編集履歴

1 前回、実現できたコードを入力しました。

退会済みユーザー

退会済みユーザー

2019/02/13 12:22  投稿

UIButtonでランダムの場所に出力した複数のUILabelをUserDefaultsに保存したい
あらかじめグローバル変数で宣言したUILabelをuserDefaultsに保存することは実現できましたが、ではUIButtonでランダムの位置にaddSubViewで出力した複数のUILabelを保存するにはどうすればよいのでしょうか。そもそもuserDefaultsを使うことがふさわしくないのでしょうか。よろしくお願いいたします。
```Swift
import UIKit
class ViewController: UIViewController {
 
   @IBOutlet weak var createUILabel: UIButton! // UILbelをランダムで出力するボタン
   @IBOutlet weak var createUILabel: UIButton! // UILabelを出力するボタン
   @IBOutlet weak var loadButton: UIButton! //ロードボタン
   @IBOutlet weak var saveButton: UIButton! //セーブボタン
   
   let save = UserDefaults.standard //userDefaults
 
   
   override func viewDidLoad() {
       
       super.viewDidLoad()
       
       createUILabel.backgroundColor = UIColor.green
       loadButton.backgroundColor = UIColor.blue
       saveButton.backgroundColor = UIColor.red
       
   }
   
   //UILabelをランダムの位置に表示する処理
   //UILabelを出力する処理
   @IBAction func actionCreateUIButton(_ sender: UIButton) {
       
       let randX = Int(arc4random_uniform(300))
       let randY = Int(arc4random_uniform(300))
       
       let label = UILabel()
       label.text = String("text")
       label.sizeToFit()
       label.center = CGPoint(x: randX, y: randY)
       view.addSubview(label)
       
   }
   
   
   @IBAction func actionSaveButton(_ sender: UIButton) {
     
       //ランダムで表示されたデータを保存したい
   
   }
   
   @IBAction func actionLoadButton(_ sender: UIButton) {
     
       //保存したデータを出力したい
       
   }
   
 
}
```
```
UIlabelを保存というのは良くない表現でした。UIlabelのプロパティを保存するという意味でした。失礼しました。
以下、UILabelをuserDefaultsに保存することは実現できたコードです。
```swift
import UIKit
class ViewController: UIViewController {
   @IBOutlet weak var createButton: UIButton! //UILabelを出力するボタン
   @IBOutlet weak var loadButton: UIButton! //ロードボタン
   @IBOutlet weak var saveButton: UIButton! //セーブボタン
   
   let save = UserDefaults.standard
 
   let testLabel = UILabel()
   
   override func viewDidLoad() {
       
       super.viewDidLoad()
       
       createButton.backgroundColor = UIColor.darkGray
       loadButton.backgroundColor = UIColor.blue
       saveButton.backgroundColor = UIColor.red
     
   }
   
   //UILabelを表示する処理
   @IBAction func actionCreateButton(_ sender: UIButton) {
       
       let randX = Int(arc4random_uniform(300))
       let randY = Int(arc4random_uniform(300))
       
       testLabel.text = String("テスト")
       testLabel.sizeToFit()
       testLabel.center = CGPoint(x: randX, y: randY)
       
       view.addSubview(testLabel)
       print(testLabel.frame.origin.x)
       print(testLabel.frame.origin.y)
 
   }
   
   //UILabelのプロパティを保存する処理
   @IBAction func actionSaveButton(_ sender: UIButton) {
     
       save.set(testLabel.center.x, forKey: "hoge")
       save.set(testLabel.center.y, forKey: "fuga")
       save.set(testLabel.text, forKey: "piyo")
       save.synchronize()
   
   }
   
   //UIlabelのプロパティを出力する処理
   @IBAction func actionLoadButton(_ sender: UIButton) {
     
       testLabel.center = CGPoint(x: save.integer(forKey: "hoge"), y: save.integer(forKey: "fuga"))
       testLabel.text = save.object(forKey: "piyo") as? String
       testLabel.sizeToFit()
       view.addSubview(testLabel)
       
   }
}
```
  • Swift

    14465 questions

    Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る