回答編集履歴

3

修正

2017/12/13 06:59

投稿

xAxis
xAxis

スコア1349

test CHANGED
@@ -1 +1,109 @@
1
+ ###追記
2
+
3
+ あまり回答が意味を成していないのですが一応おいておきます。
4
+
5
+
6
+
7
+ ###考察
8
+
9
+
10
+
11
+ かなり考えたのですが自分の知識のどこに誤解があるのか結局分からず可能な限り近めの構成でなおかつ最小の構成を用意してテストしました。
12
+
13
+ 環境
14
+
15
+ swift4
16
+
17
+ xcode9.2
18
+
19
+ ```swift4
20
+
21
+ class ViewController: UIViewController {
22
+
23
+ @IBAction func tap(_ sender: UIButton) {
24
+
25
+ let textVC = TextViewController()
26
+
27
+ print("textField = (textVC.textField) in ViewController")
28
+
29
+ textVC.embed(in: self)
30
+
31
+ }
32
+
33
+
34
+
35
+ override func viewDidLoad() {
36
+
37
+ super.viewDidLoad()
38
+
39
+ }
40
+
41
+ override func didReceiveMemoryWarning() {
42
+
43
+ super.didReceiveMemoryWarning()
44
+
45
+ }
46
+
47
+ }
48
+
49
+ ```
50
+
51
+ ```swift4
52
+
53
+ class TextViewController: UIViewController, UITextFieldDelegate {
54
+
55
+ @IBOutlet weak var textField: UITextField! //from CustomTextField.xib
56
+
57
+
58
+
59
+ override func viewDidLoad() {
60
+
61
+ super.viewDidLoad()
62
+
1
- (contents is deleted)
63
+ textField.delegate = self
64
+
65
+ print("call textField = (textField) in viewDidLoad")
66
+
67
+ }
68
+
69
+ override func didReceiveMemoryWarning() {
70
+
71
+ super.didReceiveMemoryWarning()
72
+
73
+ }
74
+
75
+ func embed(in parent: UIViewController) {
76
+
77
+ self.view.frame = parent.view.bounds
78
+
79
+ parent.view.addSubview(self.view)
80
+
81
+ self.didMove(toParentViewController: parent)
82
+
83
+ }
84
+
85
+
86
+
87
+ }
88
+
89
+ ```
90
+
91
+ 画像に表示されているcustomclassはFile's Ownerのものです。
92
+
93
+ ![image](8d5759d8d69a4fda8c6ac3bee9f0e0a6.png)
94
+
95
+ TextViewControllerにあるtextFieldはCustomTextField.xibよりIBOutlet接続してあります。
96
+
97
+ printの結果は
98
+
99
+ ```
100
+
101
+ textField = nil in ViewController
102
+
103
+ (lldb)
104
+
105
+ ```
106
+
107
+ となり、textFieldがnilであるため```textField.delegate = self```の行でFatal errorとなりました。つまり質問の中にあるinputTextは**どこか別のところから接続してあるのではないか**と考えられます。またFile's OwnerであってもIBOutlet接続だけではダメでロード作業は必要になるはずです。
108
+
109
+ 以上より回答はcustomviewのある.xibファイルから正しくIBOutlet接続を行い、ロードも正しく行う、となります。

2

削除

2017/12/13 06:59

投稿

xAxis
xAxis

スコア1349

test CHANGED
@@ -1,129 +1 @@
1
- かなり考えたのですが自分の知識のどこに誤解があるのか結局分からず可能な限り近めの構成でなおかつ最小の構成を用意してテストしました。
2
-
3
-
4
-
5
- 環境
6
-
7
- swift4
8
-
9
- xcode9.2
10
-
11
-
12
-
13
- ```swift4
14
-
15
- class ViewController: UIViewController {
16
-
17
-
18
-
19
- @IBAction func tap(_ sender: UIButton) {
20
-
21
- let textVC = TextViewController()
22
-
23
- print("textField = (textVC.textField) in ViewController")
24
-
25
- textVC.embed(in: self)
26
-
27
- }
28
-
29
-
30
-
31
- override func viewDidLoad() {
32
-
33
- super.viewDidLoad()
34
-
35
- }
36
-
37
-
38
-
39
- override func didReceiveMemoryWarning() {
40
-
41
- super.didReceiveMemoryWarning()
42
-
43
- }
44
-
45
-
46
-
47
-
48
-
49
- }
50
-
51
- ```
52
-
53
-
54
-
55
- ```swift4
56
-
57
- class TextViewController: UIViewController, UITextFieldDelegate {
58
-
59
-
60
-
61
- @IBOutlet weak var textField: UITextField! //from CustomTextField.xib
62
-
63
-
64
-
65
- override func viewDidLoad() {
66
-
67
- super.viewDidLoad()
68
-
69
- textField.delegate = self
1
+ (contents is deleted)
70
-
71
- print("call textField = (textField) in viewDidLoad")
72
-
73
- }
74
-
75
-
76
-
77
- override func didReceiveMemoryWarning() {
78
-
79
- super.didReceiveMemoryWarning()
80
-
81
- }
82
-
83
-
84
-
85
- func embed(in parent: UIViewController) {
86
-
87
- self.view.frame = parent.view.bounds
88
-
89
- parent.view.addSubview(self.view)
90
-
91
- self.didMove(toParentViewController: parent)
92
-
93
- }
94
-
95
-
96
-
97
- }
98
-
99
- ```
100
-
101
- 画像に表示されているcustomclassはFile's Ownerのものです。
102
-
103
- ![image](8d5759d8d69a4fda8c6ac3bee9f0e0a6.png)
104
-
105
-
106
-
107
- TextViewControllerにあるtextFieldはCustomTextField.xibよりIBOutlet接続してあります。
108
-
109
-
110
-
111
- printの結果は
112
-
113
-
114
-
115
- ```
116
-
117
- textField = nil in ViewController
118
-
119
- (lldb)
120
-
121
- ```
122
-
123
-
124
-
125
- となり、textFieldがnilであるため```textField.delegate = self```の行でFatal errorとなりました。つまり質問の中にあるinputTextは**どこか別のところから接続してあるのではないか**と考えられます。またFile's OwnerであってもIBOutlet接続だけではダメでロード作業は必要になるはずです。
126
-
127
-
128
-
129
- 以上より回答はcustomviewのある.xibファイルから正しくIBOutlet接続を行い、ロードも正しく行う、となります。

1

変更

2017/12/13 06:55

投稿

xAxis
xAxis

スコア1349

test CHANGED
@@ -1,5 +1,129 @@
1
- 最後に思いついたのはdelegateをStoryboard側設定をすることぐ
1
+ かなり考えたのですが自分の知識のどこに誤解があのか結局分かず可能な限り近めの構成なおかつ最小の構成を用意してテストしました
2
2
 
3
- これでダメなら申し訳ないですが自分ではお手上げです。
4
3
 
4
+
5
+ 環境
6
+
7
+ swift4
8
+
9
+ xcode9.2
10
+
11
+
12
+
13
+ ```swift4
14
+
15
+ class ViewController: UIViewController {
16
+
17
+
18
+
19
+ @IBAction func tap(_ sender: UIButton) {
20
+
21
+ let textVC = TextViewController()
22
+
23
+ print("textField = (textVC.textField) in ViewController")
24
+
25
+ textVC.embed(in: self)
26
+
27
+ }
28
+
29
+
30
+
31
+ override func viewDidLoad() {
32
+
33
+ super.viewDidLoad()
34
+
35
+ }
36
+
37
+
38
+
39
+ override func didReceiveMemoryWarning() {
40
+
41
+ super.didReceiveMemoryWarning()
42
+
43
+ }
44
+
45
+
46
+
47
+
48
+
49
+ }
50
+
51
+ ```
52
+
53
+
54
+
55
+ ```swift4
56
+
57
+ class TextViewController: UIViewController, UITextFieldDelegate {
58
+
59
+
60
+
61
+ @IBOutlet weak var textField: UITextField! //from CustomTextField.xib
62
+
63
+
64
+
65
+ override func viewDidLoad() {
66
+
67
+ super.viewDidLoad()
68
+
69
+ textField.delegate = self
70
+
71
+ print("call textField = (textField) in viewDidLoad")
72
+
73
+ }
74
+
75
+
76
+
77
+ override func didReceiveMemoryWarning() {
78
+
79
+ super.didReceiveMemoryWarning()
80
+
81
+ }
82
+
83
+
84
+
85
+ func embed(in parent: UIViewController) {
86
+
87
+ self.view.frame = parent.view.bounds
88
+
89
+ parent.view.addSubview(self.view)
90
+
91
+ self.didMove(toParentViewController: parent)
92
+
93
+ }
94
+
95
+
96
+
97
+ }
98
+
99
+ ```
100
+
101
+ 画像に表示されているcustomclassはFile's Ownerのものです。
102
+
5
- ![image](12bb56a0e8bd6725958e8427e7651f60.jpeg)
103
+ ![image](8d5759d8d69a4fda8c6ac3bee9f0e0a6.png)
104
+
105
+
106
+
107
+ TextViewControllerにあるtextFieldはCustomTextField.xibよりIBOutlet接続してあります。
108
+
109
+
110
+
111
+ printの結果は
112
+
113
+
114
+
115
+ ```
116
+
117
+ textField = nil in ViewController
118
+
119
+ (lldb)
120
+
121
+ ```
122
+
123
+
124
+
125
+ となり、textFieldがnilであるため```textField.delegate = self```の行でFatal errorとなりました。つまり質問の中にあるinputTextは**どこか別のところから接続してあるのではないか**と考えられます。またFile's OwnerであってもIBOutlet接続だけではダメでロード作業は必要になるはずです。
126
+
127
+
128
+
129
+ 以上より回答はcustomviewのある.xibファイルから正しくIBOutlet接続を行い、ロードも正しく行う、となります。