Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/113.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 删除Swift中由代码添加的UIView_Ios_Swift_Uiview - Fatal编程技术网

Ios 删除Swift中由代码添加的UIView

Ios 删除Swift中由代码添加的UIView,ios,swift,uiview,Ios,Swift,Uiview,在UINavigationController中,我通过代码添加UIView。 我想在视图消失时删除此UIView,但我找不到正确的方法。以下是我正在使用的: var patch: UIView! override func viewDidLoad() { super.viewDidLoad() patch = UIView(frame: CGRectMake(0, 0, view.bounds.width, 20)) patch.backgroundColor =

在UINavigationController中,我通过代码添加UIView。 我想在视图消失时删除此UIView,但我找不到正确的方法。以下是我正在使用的:

var patch: UIView!

override func viewDidLoad() {
    super.viewDidLoad()

    patch = UIView(frame: CGRectMake(0, 0, view.bounds.width, 20))
    patch.backgroundColor = UIColor.redColor()
    self.view.addSubview(patch)
}

override func viewWillDisappear(animated: Bool) {
    super.viewWillDisappear(true)

    patch.removeFromSuperview()
    // or
    self.view.willRemoveSubview(patch)
}

override func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator) {
    if UIDevice.currentDevice().orientation.isLandscape.boolValue {
        patch.hidden = true
    } else {
        patch.hidden = false
    }
}
什么也没有,景色还在

我甚至试着将patch设置为nil或CGRectMake(0,0,0,0),但什么都没有


删除它的正确代码是什么?

当父视图已经消失时,为什么需要删除它?如果您只将其添加到
viewDidLoad
中,那么肯定没有什么要做的了?当设备是纵向的且隐藏在横向中时,此UIView应该是可见的。所以,如果我关闭视图,然后我回到那里,代码生成另一个UIView,新的UIView由代码管理,所以当屏幕旋转时,新的UIView会消失,但旧的总是在顶部。我真的相信,您没有很好地管理视图。您应该只创建一个
UIView
实例-使其成为全局变量。如果你想隐藏或显示你的视图,那么在纵向或横向模式下使用它的
hidden
属性。我用这种方式管理UIView,它应该是正确的…好的,看起来不错。请确保您正在正确的对象上调用
removeFromSuperview()
。在UI上绘制的对象。这是从视图层次结构中删除
ui视图
的正确方法。