Почему мой UIStackView по-прежнему показывает детей, когда они были удалены - PullRequest
0 голосов
/ 28 марта 2019

Я пытаюсь создать упорядоченное подпредставление из моего стека, однако, когда я пытаюсь это сделать, фактическое представление исчезает, но оно все еще занимает место. Есть ли способ избежать этого?

вот мой метод onClick:

@objc func OnTrashButtonPress(sender: UIButton) {
        let view = sender.superview
        view!.isHidden = true
        StackView.removeArrangedSubview(view!)
        view!.removeFromSuperview()

        }

вот как обычно выглядит мой взгляд: https://imgur.com/CDq3vJs

и вот как это выглядит, когда я удаляю представление: https://imgur.com/8HfdqAn

Я в основном пытаюсь заставить представления внизу двигаться вверх и заполнять пустое пространство, но я не думаю, что это происходит, потому что представление не удаляется должным образом? Кажется, я не могу понять, что я делаю неправильно.

Редактировать: вот код, который фактически добавляет представление:

for (i, course) in response!.enumerated(){

            var courseView = CourseView(frame: CGRect(x: 0, y: 0, width: 415, height: 160))
            if let mark = course["mark"] as? CGFloat{
                courseView.ProgressBar.value = mark
            }else{
                courseView.ProgressBar.isHidden = true
                courseView.NATextView.isHidden = false

            }
            courseView.PeriodNumber.text = "Period: \(i+1)"
            if course["Room_Number"] != nil{
                courseView.RoomNumber.text = "Room: \(course["Room_Number"]!)"
            }
            if course["course"] != nil{
                courseView.CourseCode.text = (course["course"] as! String)
            }
            if course["Course_Name"] != nil{
                courseView.CourseName.text = (course["Course_Name"] as! String)
            }
            StackView.addArrangedSubview(courseView as UIView)
            print(courseView as UIView)
            courseView.TrashButton.addTarget(self, action: #selector(OnTrashButtonPress), for: .touchUpInside)
            courseList.append(courseView)

            StackViewHeight.constant = StackViewHeight.constant + 175

        }

1 Ответ

0 голосов
/ 28 марта 2019

Ух ты, хорошо. Так что для любого, кто сталкивается с этим в будущем и находится на грани безумия, вот как я это решил. Очевидно, что когда вы добавляете UIView из файла XIB, вам нужно вызвать суперпредставление дважды, например так: let view = sender.superview?.superview, чтобы получить актуальный суперпредставление для кнопки удаления

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...