有没有更好的方法从视图中删除最后一个子视图

时间:2014-06-19 09:36:43

标签: objective-c uiview

要从视图中删除最后一个子视图,我使用

[[[self.view subviews] lastObject] removeFromSuperview];

我使用removeLastObject,但不能因为subviews是只读不可变数组。

所以我需要:

  • 访问所有子视图

  • 获取最后一个对象

  • 调用方法将其从superview中删除

它有效,但是有更好的方法吗?这似乎有点不自然。我寻找像[self.view removeLastSubview]这样的东西,但不幸的是它不存在。

2 个答案:

答案 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