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

回答編集履歴

2

追記の修正

2019/11/21 14:18

投稿

Kapustin
Kapustin

スコア1188

answer CHANGED
@@ -29,7 +29,7 @@
29
29
  import UIKit
30
30
  import SwiftOSC
31
31
 
32
- class ViewController: UIViewController ,UIGestureRecognizerDelegate, OSCServerDelegate {
32
+ class ViewController: UIViewController ,UIGestureRecognizerDelegate {
33
33
  @IBOutlet weak var label1: UILabel!
34
34
 
35
35
  var server = OSCServer(address: "", port: 8080) //OSC受信のセットアップ

1

回答の追記

2019/11/21 14:18

投稿

Kapustin
Kapustin

スコア1188

answer CHANGED
@@ -21,4 +21,39 @@
21
21
  label1.text = "Received!"
22
22
  }
23
23
 
24
- ```
24
+ ```
25
+
26
+ もし別クラスに分ける必要があれば、OSCHandlerクラスのインスタンスにViewControllerのインスタンスを知らせる必要があります。
27
+
28
+ ```
29
+ import UIKit
30
+ import SwiftOSC
31
+
32
+ class ViewController: UIViewController ,UIGestureRecognizerDelegate, OSCServerDelegate {
33
+ @IBOutlet weak var label1: UILabel!
34
+
35
+ var server = OSCServer(address: "", port: 8080) //OSC受信のセットアップ
36
+ let oscHandler = OSCHandler()
37
+
38
+ override func viewDidLoad() {
39
+ super.viewDidLoad()
40
+
41
+ oscHandler.viewController = self
42
+ server.start()
43
+ server.delegate = oscHandler
44
+ label1.text = "Not yet"
45
+ }
46
+
47
+ class OSCHandler: OSCServerDelegate {
48
+
49
+ var viewController: ViewController?
50
+
51
+ func didReceive(_ message: OSCMessage){
52
+ viewController?.label1.text = "Received!"
53
+ }
54
+ }
55
+
56
+
57
+ ```
58
+
59
+ 他にもOSCServerをOSCHandlerに持たせ、シングルトンにしてdelegateで処理するなど、やり方は色々ありそうです。