要从视图中删除最后一个子视图,我使用
[[[self.view subviews] lastObject] removeFromSuperview];
我使用removeLastObject
,但不能因为subviews
是只读不可变数组。
所以我需要:
访问所有子视图
获取最后一个对象
调用方法将其从superview中删除
它有效,但是有更好的方法吗?这似乎有点不自然。我寻找像[self.view removeLastSubview]
这样的东西,但不幸的是它不存在。
答案 0 :(得分:3)
避免使用Objective-C的消息发送语法
注意:不要那样做
UIView *lastView = self.view.subviews[self.view.subviews.count-1];
lastView.removeFromSuperview;
我说:不要那样做
但严肃地说:
[[[self.view subviews] lastObject] removeFromSuperview];
很好。我考虑了第一个代码段嗅觉。
答案 1 :(得分:1)
制作类别
@interface UIView (Exptened) - (void)removeLastSubView; @end @implementation UIView(Exptened) - (void)removeLastSubView { [[[self subviews] lastObject] removeFromSuperview]; } @end