teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

追記

2021/01/09 00:11

投稿

hoshi-takanori
hoshi-takanori

スコア7903

answer CHANGED
@@ -20,4 +20,59 @@
20
20
 
21
21
  ```swift
22
22
  @objc func switchChanged(sender: UISwitch) {
23
+ ```
24
+
25
+ ---
26
+
27
+ とりあえず私の手元で動いてるのを貼ってみますので、お試しください。
28
+ (なお、import はまとめて最初に書くのが一般的なので、そうしてみました。)
29
+
30
+ ```swift
31
+ import UIKit
32
+ import PlaygroundSupport
33
+
34
+ class UISwitchSample: UIView {
35
+
36
+ var label: UILabel!
37
+
38
+ override init(frame: CGRect) {
39
+ super.init(frame: frame)
40
+
41
+ // スイッチとラベルをのせるビュー
42
+ let view = UIView(frame: CGRect(x: 0, y: 0, width: 200, height: 150))
43
+ self.addSubview(view)
44
+ view.center = self.center
45
+ view.backgroundColor = UIColor.white
46
+
47
+ // ラベル
48
+ label = UILabel(frame: CGRect(x: 0, y: 0, width: 100, height: 50))
49
+ label.center = CGPoint(x: view.frame.width/2, y: view.frame.height * 0.75)
50
+ label.textColor = UIColor.blue
51
+ label.textAlignment = NSTextAlignment.center
52
+ view.addSubview(label)
53
+
54
+ let sw = UISwitch(frame: CGRect(x: 0, y: 0, width: 60, height: 40))
55
+ view.addSubview(sw)
56
+ sw.center = CGPoint(x: view.frame.width/2, y: view.frame.height/2)
57
+
58
+ // スイッチをONにする
59
+ sw.setOn(true, animated: true)
60
+ label.text = "ON"
61
+
62
+ // 値が変わった時の処理を指定
63
+ sw.addTarget(self, action: #selector(switchChanged), for: UIControl.Event.valueChanged)
64
+ }
65
+
66
+ @objc func switchChanged(sender: UISwitch) {
67
+ // スイッチのon/off
68
+ if sender.isOn { label.text = "ON"}
69
+ else { label.text = "OFF" }
70
+ }
71
+
72
+ required init(coder aDecoder: NSCoder) {
73
+ fatalError("init(coder:) has not been implemented")
74
+ }
75
+ }
76
+
77
+ PlaygroundPage.current.liveView = UISwitchSample(frame: CGRect(x: 0, y: 0, width: 200, height: 150))
23
78
  ```