Q
从上海华
1
A
回答
3
这不是如何在循环工作。仅仅因为你指定了一个类型,并不意味着只有该类型的对象才会受到影响。 subviews
中的每个视图都会对removeFromSuperview
作出响应,因此无论它被投射为什么,它仍会被删除。
如果你只想删除Sprite
对象,那么你需要检查每个对象的类。
for (UIView *view in self.view.subviews)
{
if ([view isKindOfClass:[Sprite class]])
[view removeFromSuperview];
}
1
在这种情况下,子视图包含一切(精灵和其他对象)。你的枚举不仅返回精灵 - 它返回所有东西(但是松散地将它们转换成精灵)。在这种情况下,子视图的所有内容都会响应removeFromSuperview方法 - 因此所有内容都将被删除。
当您循环浏览子视图以确定是否需要删除时,您需要检查对象的类型。
0
您的代码在self.view的所有子视图上调用removeFromSuperview,因此它在写入时正常工作。这段代码运行的原因是因为Sprite可能是UIView的一个子类,所以编译器不会错误/警告你。你需要做的是更多这样的:
-(IBAction)clearAll:(id)sender{
for (UIView *aSubview in self.view.subviews){
if ([aSubview isSubclassOf
[sprite removeFromSuperview];
}
1
我们可以使用下面的语句它的父删除的UIView类型的所有实例。
[[self.view subviews] makeObjectsPerformSelector:@selector(removeFromSuperview)];
它看起来更干净,更简单,而不是做一个循环。
相关问题
- 1. 从上海华
- 2. 从上海华
- 3. 从对准上海华
- 4. EXC_BAD_ACCESS时从上海华
- 5. MPMoviePlayerController.view没有从上海华
- 6. 无法从上海华
- 7. Wikitude SDK从上海华
- 8. 从上海华卸下与gestureRecognizer
- 9. 调整与上海华
- 10. 有来自上海华
- 11. “上海华”不承认
- 12. 访问上海华性质
- 13. 斯威夫特:在上海华与NSLayoutConstraint
- 14. 集上海华高度约束
- 15. 子视图将覆盖上海华
- 16. 状态栏和上海华帧大小
- 17. 块传递手势上海华
- 18. 设置图层蒙版UIBezierPath上海华
- 19. 当子视图被删除,从上海华
- 20. 布局从上海华盈的底部按钮反应母语
- 21. 从完成期间上海华删除删除它前面
- 22. 从上海华盈删除的UITextField不让它消失在屏幕上
- 23. 改变上海华框架不应影响其子视图帧
- 24. IPHONE:测试,看是否有看法是对上海华
- 25. 获取的UITableViewCell与上海华在iOS的7
- 26. 通行证触摸到上海华盈(UIButton的)
- 27. 为什么会子视图是由上海华
- 28. 自动调整子视图调整的上海华
- 29. 制作XIB自由视图适合上海华在Main.storyboard
- 30. 的Android - 华为设备上奇怪的晶圆厂海拔