快速,隐藏/删除窗口(查看?)

时间:2018-12-22 19:16:19

标签: swift firebase uiview connection window

我想删除在以下代码(窗口keyWindow或v UIView)上创建的视图。

我尝试使用了适用于查看的.tag,但无法正常工作。

为说明代码的用途,它使用Firebase测试是否存在互联网连接;如果不是,则屏幕中间会显示wifi gif;如果是的话,no wifi gif应该消失(但在我看来不是)。

在这里,它正确显示了带有窗口​​(v)的gif,并且当它获得连接时,它会尝试测试以删除该视图,但它什么也不做

此代码应该可以在我的应用程序的每个uiviewcontroller上使用(这是我的目标),但是现在我正在使用Viewcontroller上的本地func对其进行测试

编辑:这是谁感兴趣的固定代码:)

 func testconnection() {



        DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(2), execute: {
            let connectedRef = Database.database().reference(withPath: ".info/connected")
            connectedRef.observe(.value, with: { snapshot in
                if let connected = snapshot.value as? Bool, connected {
                    print("Connected")
                    let window = UIApplication.shared.keyWindow!
                    let v = UIView(frame: CGRect(x: self.view.center.x-50, y: self.view.center.y-10, width: 100, height: 100))
                    v.backgroundColor = UIColor.black
                    v.tag = 100
                    print("Start testing to remove the view with correct tag")
                    if let viewWithTag = window.viewWithTag(100) {
                        print("yes, remove view")
                        viewWithTag.removeFromSuperview()
                    }else{
                        print("Not the correct tag / view not created")
                    }



                }
                else {

                    print ("Not connected")


                    SDWebImageCodersManager.sharedInstance().addCoder(SDWebImageGIFCoder.shared())
                    let window = UIApplication.shared.keyWindow!
                    let v = UIView(frame: CGRect(x: self.view.center.x-50, y: self.view.center.y-10, width: 100, height: 100))
                    window.addSubview(v);
                    let imageData = try? Data(contentsOf: Bundle.main.url(forResource: "noWifi1", withExtension: "gif")!)
                    let advTimeGif = UIImage.gifImageWithData(imageData!)
                    let imageView2 = UIImageView(image: advTimeGif)
                    imageView2.frame = CGRect(x: 0, y: 0, width: 100, height: 100)
                    imageView2.tag = 100
                    v.addSubview(imageView2)




                }
            })
        })
    }

1 个答案:

答案 0 :(得分:2)

它不起作用,因为您将v添加到了window,而不是self.view上;结果,viewWithTagnil。要解决此问题,请将self.view.viewWithTag(100)更改为window.viewWithTag(100)

viewWithTag(_:)将查看接收者的视图层次结构,以获取具有匹配标签的视图。就您而言,v不在self.view的层次结构中。