从UIView中删除子视图?

时间:2014-04-08 12:34:52

标签: ios uiview xamarin.ios performselector

您好我在Monotouch中编写了一个iOS平铺地图组件,要求我从父UiView中删除并添加大量(标记)UIViews作为主线程的一部分。

我专门为引脚实现群集。当它们变得靠近时,它们聚集成节点,显示节点所代表的引脚数。根据缩放级别,我需要在进出节点时添加和删除引脚

添加视图很好,因为可以使用

批量完成
 _parentView.AddSubviews (viewsToAdd.ToArray());

加上它可以分块。

但是删除会影响我的表现,因为必须使用

删除每个单独的视图
view.RemoveFromSuperview ();
view.Dispose ();

有没有办法加快手术速度?

我考虑将视图放入NsArray并使用performSelector从superview中删除但我无法在单声道触摸中找到正确的语法

谢谢卢克

1 个答案:

答案 0 :(得分:0)

我认为您应该考虑回收您的观点,而不是处理它们并创建新的观点。这是Apple MKMapView提供的内容,但如果您使用它,则不提。它的工作原理是添加一些MKPlacemark个对象,当您在地图上滚动时,这些对象由MKAnnotationView可循环播放的视图表示。

Xamarin的现场服务应用程序中使用MKMapView's DequeueReusableAnnotation方法有一个合理的example。向下滚动到MapViewDelegate嵌套类。

如果您使用的是其他地图库,例如Google地图,则应考虑保留Queue<T>个观看点以便回收它们。这样您就可以只调用AddSubviewRemoveFromSuperview,而不是一遍又一遍地创建新对象。