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

3
为了从一个视图中移除最后一个子视图,我使用以下代码:
[[[self.view subviews] lastObject] removeFromSuperview];

我会使用removeLastObject,但由于subviews是只读的不可变数组,所以无法使用它。
因此,我需要:
  • 访问所有子视图

  • 获取最后一个对象

  • 调用其方法将其从父视图中删除

这样做可以实现目的,但是否存在更好的方法?这似乎有点不自然。我正在寻找类似于[self.view removeLastSubview]的东西,但不幸的是它不存在。

@trojanfoe 这个可以用,但我认为有更好的方法。它看起来有点不自然。 - nicael
你做得很好。对于不自然的部分,欢迎来到Objective-C :) - viral
不,这样做真的很好。调用 subviewslastObject 真的很便宜,而且 removeFromSuperview 也必须执行。 - Sebastian Wramba
哎呀,我试图添加“[搁置]”,结果它被添加了……所以我把它删除了。 - nicael
2个回答

3
为了避免使用Objective-C的消息发送语法 注意:不要那样做
UIView *lastView = self.view.subviews[self.view.subviews.count-1];
lastView.removeFromSuperview;

我说过:不要那样做

但是,说真的:

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

是可以的。我认为第一个代码片段有代码异味。


1
创建一个分类
@interface UIView (Exptened)
- (void)removeLastSubView;
@end
@implementation UIView(Exptened)
- (void)removeLastSubView { [[[self subviews] lastObject] removeFromSuperview]; }
@end

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接