我正在寻找一种简单的方法来立即从超视图中删除所有子视图,而不是逐个删除它们.
//I'm trying something like this, but is not working
let theSubviews : Array = container_view.subviews
for (view : NSView) in theSubviews {
view.removeFromSuperview(container_view)
}
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
UPDATE
我的应用有一个主要的container_view.我必须添加不同的其他视图作为子视图,container_view以提供一种导航.
因此,当单击按钮以"打开"特定页面时,我需要删除所有子视图并添加新视图.
更新2 - 工作解决方案(OS X)
我猜Apple修了它.
现在比以往任何时候都更容易,只需致电:
for view in containerView.subviews{
view.removeFromSuperview()
}
Run Code Online (Sandbox Code Playgroud) 我有一个scrollView,我添加了一个refreshcontroll.
self.refreshControl = UIRefreshControl()
self.refreshControl.attributedTitle = NSAttributedString(string: "Frissítéshez húzzad! :)")
self.refreshControl.addTarget(self, action: "refresh:", forControlEvents: UIControlEvents.ValueChanged)
self.scrollView.addSubview(refreshControl)
Run Code Online (Sandbox Code Playgroud)
在刷新方法中,我必须从scrollview中删除所有子视图,然后重新填充scrollview ..
self.refreshControl = UIRefreshControl()
self.refreshControl.attributedTitle = NSAttributedString(string: "Frissítéshez húzzad! :)")
self.refreshControl.addTarget(self, action: "refresh:", forControlEvents: UIControlEvents.ValueChanged)
self.scrollView.addSubview(refreshControl)
Run Code Online (Sandbox Code Playgroud)
在我尝试拉动之后,我的滚动视图获得了新数据,但它不再具有refreshcontroll.我认为这是因为当我从我的scrollview中删除子视图时,我也从中删除了refreshcontroll.(如果我在刷新方法中再次添加refreshcontroll,我的scrollview将再次刷新控件)但是还有另一个问题.刷新后我的滚动视图向下移动..我附在图片上:
这就是我删除子视图的方法:
func refresh(sender:AnyObject)
{
//remove all subviews from scrollview..
let subViews = self.scrollView.subviews
for subview in subViews{
println("for removing...")
subview.removeFromSuperview()
}
println("refresh called..")
UIApplication.sharedApplication().applicationIconBadgeNumber = 0
//remove all elements from the array
tstFrames.removeAll(keepCapacity: false)
//refresh data from webservice and adding it to tstFrames Array
wsServiceFeedTst()
//adding …Run Code Online (Sandbox Code Playgroud)