如果集合视图为空,请删除子视图

时间:2017-08-14 01:21:54

标签: ios swift collectionview

如果集合视图为空,当我向用户显示消息时,我有一个集合视图。我还以编程方式添加一个按钮,让用户在集合视图为空时添加照片。然而,一旦添加了照片并且我重新加载了集合视图,我找到了摆脱标签的方法,但是,我怎样才能摆脱按钮的子视图?因为我无法访问" self.collectionViews?.addSubview(button)"因为它是在一个警卫let声明中。提前谢谢!

  guard let parseUSERS = parseJSON["users"] as? [AnyObject] else {


// if the collection view is empty, display a message
   let messageLabel = UILabel(frame: CGRect(x: 20.0, y: 10, width: self.collectionViews!.bounds.size.width - 40.0, height: (self.collectionViews?.bounds.size.height)!))
   messageLabel.text = "Collection view is empty!"
   messageLabel.font = messageLabel.font.withSize(20)
   messageLabel.font = UIFont.boldSystemFont(ofSize: messageLabel.font.pointSize)
   messageLabel.textColor = UIColor.white
   messageLabel.numberOfLines = 0
   messageLabel.textAlignment = NSTextAlignment.center
   messageLabel.sizeToFit()

   let button = UIButton(frame: CGRect(x: 80.0, y: 320, width: 215, height: 50))
   button.backgroundColor = UIColor.white
   button.setTitle("create",for: .normal)
   button.setTitleColor(colorCircleBlue, for: .normal)
   button.addTarget(self, action: #selector(self.action(sender:)), for: .touchUpInside)

   // round corners for login/register buttons
   button.layer.cornerRadius = button.bounds.width / 20

   self.collectionViews?.backgroundColor = UIColor.blue
   self.collectionViews?.backgroundView = messageLabel
   self.collectionViews?.addSubview(button)


    return
}


    self.collectionViews?.backgroundColor = UIColor.white
    self.collectionViews?.backgroundView = nil

1 个答案:

答案 0 :(得分:1)

我建议制作一个包含UILabel和UIButton的UIView。然后将前面提到的UIView设置为UICollectionView的backgroundView。确保在backgroundView上启用了userInteraction。

这将确保UILabel& amp;将backgroundView设置为nil时,将删除UIButton。

这样的事情可以解决问题(请注意我没有测试过这个):

    //Container view
    let view = UIView.init(frame: self.collectionViews?.frame)
    //Label 
    let messageLabel = UILabel(frame: CGRect(x: 20.0, y: 10, width: self.collectionViews!.bounds.size.width - 40.0, height: (self.collectionViews?.bounds.size.height)!))
    messageLabel.text = "Collection view is empty!"
    messageLabel.font = messageLabel.font.withSize(20)
    messageLabel.font = UIFont.boldSystemFont(ofSize: messageLabel.font.pointSize)
    messageLabel.textColor = UIColor.white
    messageLabel.numberOfLines = 0
    messageLabel.textAlignment = NSTextAlignment.center
    messageLabel.sizeToFit()
    //Button
    let button = UIButton(frame: CGRect(x: 80.0, y: 320, width: 215, height: 50))
    button.backgroundColor = UIColor.white
    button.setTitle("create",for: .normal)
    button.setTitleColor(colorCircleBlue, for: .normal)
    button.addTarget(self, action: #selector(self.action(sender:)), for: .touchUpInside)
    // round corners for login/register buttons
    button.layer.cornerRadius = button.bounds.width / 20
    //Add elements to container view
    view.addSubview(messageLabel)
    view.addSubview(button)
    self.collectionViews?.backgroundView = view

然后将来当你想删除这两个元素时,你可以将backgroundView设置为nil。