質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

2回答

274閲覧

forで作成したviewなどの削除について

_kuma

総合スコア6

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

1グッド

1クリップ

投稿2020/03/12 14:38

編集2020/03/12 15:34

forの中でviewとlabelとbuttomのインスタンスをそれぞれ作成した場合、どのように削除を行えば良いでしょうか?

※下記「days」は当月分の日数を保持しています。

〜前提〜
scrollView上にviewを作成してそのview上にlabelとbuttomを作成しております。
scrollViewは左右にのみスクロール出来て
右スワイプで翌月分、左スワイプで前月分の日数を「days」に渡し、days分view, label,buttomを作成しております。

〜階層〜
scrollview(UIScrollView)
view(UIView)
dV(UIView)
dL,dB(UILabel,UIButtom)

for day in days { let dV = UIView() view.addSubview(dV) let dL = UILabel() dV.addSubview(dL) let dB = UIButtom() dV.addSubview(dB)

tableVIewを使えば良いのですが、こういった場合どうしたら良いのか知りたいです。

〜質問項目〜
①for内の定数を取得する方法
②for内の定数の削除ができるようにする方法

皆様お忙しい中恐縮ですが、お知恵をお貸しください。
よろしくお願いいたします。

s.k👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

表示がうまくいきませんが、骨格としてはこんな感じでしょうか。

Swift

1class ViewController: UIViewController { 2 var dV: [UIView] = [] 3 @IBOutlet var myView: UIView! 4 5 override func viewDidLoad() { 6 super.viewDidLoad() 7 // Do any additional setup after loading the view. 8 for day in 1...3 { 9 let v = UIView() 10 self.myView.addSubview(v) 11 self.dV.append(v) 12 13 let l = UILabel() 14 l.text = "Label" + day.description 15 v.addSubview(l) 16 17 let b = UIButton() 18 b.titleLabel?.text = "Button" + day.description 19 v.addSubview(b) 20 } 21 } 22 23 @IBAction func removeSubview(_ sender: Any) { 24 for var v in self.dV { 25 v.removeFromSuperview() 26 } 27 } 28 29}

投稿2020/03/12 17:48

編集2020/03/12 17:52
freemann

総合スコア264

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

_kuma

2020/03/13 07:32

回答ありがとうございます。 こちらでも同じように組んでみたらviewの削除をすることが出来ました。 今後もし質問する事がございましたら、ぜひよろしくお願いいたします。
guest

0

各親のビューのサブビューを削除するでいいのではないでしょうか。

サブビューの削除

投稿2020/03/12 14:49

freemann

総合スコア264

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

_kuma

2020/03/12 15:22 編集

回答ありがとうございます。 グローバルなインスタンスではないので、参照できない故に 'Value of type 'xxx' has no member 'xxx'' となります。。 for内のインスタンスをすべてグローバル化する方法はありますでしょうか? 日数分で let view1 let view2 ... とするのは冗長的ですし、、 何かいい方法があればお知恵をお貸しください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問