为什么我的UIStackView在被删除时仍显示子项

时间:2019-03-27 23:33:05

标签: ios swift uistackview

我正在尝试从我的stackview中创建一个删除的子视图,但是当我尝试这样做时,实际的视图已经消失了,但它仍然占据了空间。有什么办法可以避免这种情况?

这是我的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 :(得分:-2)

哇,好。因此,对于将来偶然发现此问题并处于精神错乱边缘的任何人,这就是我如何解决的方法。 Apparantley从XIB文件添加UIView时,需要两次调用超级视图,如下所示:let view = sender.superview?.superview为了获得删除按钮的实际超级视图