【发布时间】:2017-04-17 04:28:11
【问题描述】:
我想在单击按钮时更改两个子视图,子视图是由 StoryBoard 创建的,每个子视图都有一个按钮,单击该按钮将带来另一个子视图并隐藏当前的子视图。 但是我发现当一个子视图调用 removeFromSuperview() 时,它会自动释放,如果我以后想使用这个子视图,我需要一个 var 来指向它。 这是我的代码:
class ViewController: UIViewController {
@IBOutlet weak var secondView: UIView!
@IBOutlet weak var firstView: UIView!
var temp1: UIView?
var temp2: UIView?
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
temp1 = firstView
temp2 = secondView
secondView.removeFromSuperview()
}
@IBAction func moveToSecond(_ sender: UIButton) {
firstView.removeFromSuperview()
view.insertSubview(secondView, at: 0)
secondView.isUserInteractionEnabled = true
}
@IBAction func moveToFirst(_ sender: UIButton) {
secondView.removeFromSuperview()
view.insertSubview(firstView, at: 0)
firstView.isUserInteractionEnabled = true
}
}
没有两个临时变量,子视图会在removeFromSuperview后释放,并导致下一个insertSubview崩溃,因为它是nil。 那么,如何防止子视图自动释放呢? 是否有另一种方法可以在 StoryBoard 优雅创建的两个子视图之间进行切换?
我的错误,我没有注意到outlet很弱,一切都是合理的,当removeFromSuperview时,没有给子视图留下任何优势,而是自动释放。
【问题讨论】:
-
尝试隐藏显示你的观点
标签: ios storyboard subview