質問編集履歴

2

質問内容の編集

2021/05/27 01:16

投稿

quwant
quwant

スコア5

test CHANGED
File without changes
test CHANGED
@@ -1,23 +1,145 @@
1
+ <期待する処理>
2
+
1
3
  削除ボタンを押下した時に、そのボタンが属しているUIStackViewを親のUIStackViewから削除したいです。
4
+
5
+
2
6
 
3
7
  現在の画面構成は添付画像の通りです。
4
8
 
5
- 例えば、一番上のChildStack内にある「×」ボタンを押下した時にParentStackから一番上のChildStackを削除したいです。その様な処理は可能でしょうか。
9
+ やりたいことは、一番上のChildStack内にある「×」ボタンを押下した時にParentStackから一番上のChildStackを削除したいです。その様な処理は可能でしょうか。
6
10
 
11
+
12
+
13
+ <追記>
14
+
7
- 想像では下記のコードの様にるのかな考えています。
15
+ 説明が足りいましたので追記いたします。
16
+
17
+ ParentStackの下にaddBtnが存在します。それは新しいChildStackを既存のChildStackの下に出現させるものです。
18
+
19
+
20
+
21
+ pushDeleteBtnメソッドの中にどの様な処理を書けばいいのか分からないため質問させていただきました。
8
22
 
9
23
 
10
24
 
11
25
  ```Swift
12
26
 
13
- @objc func pushDeleteBtn(){
27
+ @objc func pushAddStackBtn(){
14
28
 
15
- ParentStack.removeArrangedSubview("ボタン押下時に属しているChildStack")
29
+ let newStackRow = UIStackView() // <- 画像のChildStackに相当
16
30
 
31
+ let newKeyField = UITextField() // <- ChildStackの子要素(左)に相当
32
+
33
+ let newValueField = UITextField() // <- ChildStackの子要素(中)に相当
34
+
35
+ let newDeleteBtn = UIButton() // <- ChildStackの子要素(右)に相当
36
+
37
+
38
+
39
+ newStackRow.translatesAutoresizingMaskIntoConstraints = false
40
+
41
+ headerStackColumn.addArrangedSubview(newStackRow)
42
+
43
+
44
+
45
+ newKeyField.translatesAutoresizingMaskIntoConstraints = false
46
+
47
+ newStackRow.addArrangedSubview(newKeyField)
48
+
49
+
50
+
51
+ newValueField.translatesAutoresizingMaskIntoConstraints = false
52
+
53
+ newStackRow.addArrangedSubview(newValueField)
54
+
55
+
56
+
57
+ newDeleteBtn.translatesAutoresizingMaskIntoConstraints = false
58
+
59
+ newStackRow.addArrangedSubview(newDeleteBtn)
60
+
61
+
62
+
63
+ // 設定
64
+
65
+ newStackRow.axis = .horizontal
66
+
67
+ newStackRow.distribution = .fill
68
+
69
+
70
+
71
+ newKeyField.borderStyle = .line
72
+
73
+ newKeyField.keyboardType = .emailAddress
74
+
75
+ newKeyField.placeholder = "Header Name"
76
+
77
+
78
+
79
+ newValueField.borderStyle = .line
80
+
81
+ newValueField.keyboardType = .emailAddress
82
+
83
+ newValueField.placeholder = "Header Value"
84
+
85
+
86
+
87
+ newDeleteBtn.setTitle("×", for: .normal)
88
+
89
+ newDeleteBtn.layer.borderColor = UIColor.black.cgColor
90
+
91
+ newDeleteBtn.setTitleColor(.black, for: .normal)
92
+
93
+ newDeleteBtn.layer.borderWidth = 0.5
94
+
95
+ newDeleteBtn.layer.cornerRadius = 0
96
+
97
+ newDeleteBtn.addTarget(self, action: #selector(pushDeleteHeaderBtn(_:)), for: .touchUpInside)
98
+
99
+
100
+
101
+ // レイアウト
102
+
103
+ newStackRow.widthAnchor.constraint(equalTo: headerStackColumn.widthAnchor).isActive = true
104
+
105
+ newStackRow.leftAnchor.constraint(equalTo: headerStackColumn.leftAnchor).isActive = true
106
+
107
+
108
+
109
+ newKeyField.widthAnchor.constraint(equalTo: newStackRow.widthAnchor, multiplier: 0.3).isActive = true
110
+
111
+ newKeyField.leftAnchor.constraint(equalTo: newStackRow.leftAnchor).isActive = true
112
+
113
+
114
+
115
+ newValueField.rightAnchor.constraint(equalTo: newStackRow.rightAnchor).isActive = true
116
+
117
+
118
+
119
+ newDeleteBtn.widthAnchor.constraint(equalTo: newStackRow.widthAnchor, multiplier: 0.08).isActive = true
120
+
121
+ newDeleteBtn.leftAnchor.constraint(equalTo: newValueField.rightAnchor).isActive = true
122
+
17
- }
123
+ }
124
+
125
+
126
+
127
+
128
+
129
+
130
+
131
+ @objc func pushDeleteBtn(_ sender: UIButton){
132
+
133
+ // I want to delete stack
134
+
135
+ }
136
+
137
+
138
+
139
+
18
140
 
19
141
  ```
20
142
 
21
143
 
22
144
 
23
- ![イメージ説明](ec4f659e75b5226e1d841eaa18e9ec1d.png)
145
+ ![イメージ説明](cbf147024ccb38ab62a01f8e5fa25899.png)

1

質問内容の編集

2021/05/27 01:16

投稿

quwant
quwant

スコア5

test CHANGED
File without changes
test CHANGED
@@ -4,6 +4,20 @@
4
4
 
5
5
  例えば、一番上のChildStack内にある「×」ボタンを押下した時にParentStackから一番上のChildStackを削除したいです。その様な処理は可能でしょうか。
6
6
 
7
+ 想像では下記のコードの様になるのかなと考えています。
8
+
9
+
10
+
11
+ ```Swift
12
+
13
+ @objc func pushDeleteBtn(){
14
+
15
+ ParentStack.removeArrangedSubview("ボタン押下時に属しているChildStack")
16
+
17
+ }
18
+
19
+ ```
20
+
7
21
 
8
22
 
9
23
  ![イメージ説明](ec4f659e75b5226e1d841eaa18e9ec1d.png)