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

回答編集履歴

5

コード記述

2018/10/22 16:31

投稿

torkia
torkia

スコア24

answer CHANGED
@@ -41,7 +41,6 @@
41
41
  override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
42
42
  if let secondSettingVC = segue.destination as? SecondSettingViewController {
43
43
  secondSettingVC.soundSetting = soundSetting
44
- secondSettingVC.soundRate = soundRate
45
44
  secondSettingVC.testdelegate = self // 設定画面のtestdelegateに自身をセット
46
45
  }
47
46
  }

4

コード記述

2018/10/22 16:30

投稿

torkia
torkia

スコア24

answer CHANGED
@@ -42,7 +42,7 @@
42
42
  if let secondSettingVC = segue.destination as? SecondSettingViewController {
43
43
  secondSettingVC.soundSetting = soundSetting
44
44
  secondSettingVC.soundRate = soundRate
45
- secondSettingVC.testdelegate = self // 設定画面のtestdelegateに自身(pvc)をセット
45
+ secondSettingVC.testdelegate = self // 設定画面のtestdelegateに自身をセット
46
46
  }
47
47
  }
48
48
 

3

コード記述

2018/10/22 16:29

投稿

torkia
torkia

スコア24

answer CHANGED
@@ -42,7 +42,7 @@
42
42
  if let secondSettingVC = segue.destination as? SecondSettingViewController {
43
43
  secondSettingVC.soundSetting = soundSetting
44
44
  secondSettingVC.soundRate = soundRate
45
- secondSettingVC.testdelegate = self // デリゲートをセット
45
+ secondSettingVC.testdelegate = self // 設定画面のtestdelegateに自身(pvc)をセット
46
46
  }
47
47
  }
48
48
 

2

コード記述

2018/10/22 16:28

投稿

torkia
torkia

スコア24

answer CHANGED
@@ -38,6 +38,14 @@
38
38
 
39
39
  (略)
40
40
 
41
+ override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
42
+ if let secondSettingVC = segue.destination as? SecondSettingViewController {
43
+ secondSettingVC.soundSetting = soundSetting
44
+ secondSettingVC.soundRate = soundRate
45
+ secondSettingVC.testdelegate = self // デリゲートをセット
46
+ }
47
+ }
48
+
41
49
  // testDelegate
42
50
  func test(soundSetting: Int) {
43
51
  for content in contentVCs {

1

コード記述

2018/10/22 16:04

投稿

torkia
torkia

スコア24

answer CHANGED
@@ -3,18 +3,19 @@
3
3
  今回のように、全体的に値を共有させたいのであれば、渡すのではなく、UserDefalts, AppDelegate, シングルトンなどの方法が適しているとアドバイスを頂いたので、実際はそうしょうと思っていますが、デリゲートも勉強したかったので、プロトコルを使ったdelegateで、設定画面VC、ページ管理VC、コンテンツVCの3カ所でデリゲートを使った値渡しをしてみました。
4
4
 
5
5
  razumaさん 
6
- 丁寧な説明ありがとうございました。
6
+ 分かりやすい説明のおかげで解決できました。ありがとうございました。
7
7
 
8
8
  ```
9
9
  ■ プロトコル
10
10
  import UIKit
11
-
12
11
  protocol testDelegate: class {
13
12
  var soundSetting:Int {get set}
14
13
  func test(soundSetting: Int)
15
14
  }
16
15
 
16
+
17
17
  ■ 設定画面
18
+ import UIKit
18
19
  class SecondSettingViewController: UIViewController { // デリゲート処理させるところ
19
20
 
20
21
  weak var testdelegate: testDelegate?
@@ -30,9 +31,9 @@
30
31
  (略)
31
32
  }
32
33
 
34
+
33
35
  ■ ページを管理するViewController
34
36
  import UIKit
35
-
36
37
  class PageViewController: UIPageViewController, UIPageViewControllerDataSource,UIPageViewControllerDelegate, testDelegate { // 継承
37
38
 
38
39
  (略)
@@ -48,10 +49,10 @@
48
49
  (略)
49
50
  }
50
51
 
52
+
51
53
  ■ ページングされるコンテツのViewController
52
54
  import UIKit
53
55
  import AVFoundation
54
-
55
56
  class PageContentViewController: UIViewController, AVAudioPlayerDelegate {
56
57
 
57
58
  override func viewDidLoad() {