Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 是否有更好的方法从视图中删除最后一个子视图_Objective C_Uiview - Fatal编程技术网

Objective c 是否有更好的方法从视图中删除最后一个子视图

Objective c 是否有更好的方法从视图中删除最后一个子视图,objective-c,uiview,Objective C,Uiview,要从视图中删除最后一个子视图,我使用 [[[self.view subviews] lastObject] removeFromSuperview]; 我会使用removeLastObject,但不能使用,因为子视图是只读不可变数组 因此,我需要: 访问所有子视图 获取最后一个对象 对其调用方法以将其从superview中删除 这是可行的,但有更好的办法吗?这似乎有点不自然。我寻找类似于[self.view removeLastSubview]的东西,但不幸的是它不存在。创建一个类别 @i

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

[[[self.view subviews] lastObject] removeFromSuperview];
我会使用
removeLastObject
,但不能使用,因为
子视图
是只读不可变数组

因此,我需要:

  • 访问所有子视图

  • 获取最后一个对象

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

这是可行的,但有更好的办法吗?这似乎有点不自然。我寻找类似于
[self.view removeLastSubview]
的东西,但不幸的是它不存在。

创建一个类别

@interface UIView (Exptened) - (void)removeLastSubView; @end @implementation UIView(Exptened) - (void)removeLastSubView { [[[self subviews] lastObject] removeFromSuperview]; } @end @界面UIView(扩展) -(void)移除最后一个子视图; @结束 @实现UIView(扩展) -(无效)移除LastSubView { [[self Subview]lastObject]removeFromSuperview]; } @结束
避免Objective-C的消息发送语法

注意:不要这样做

我说:不要那样做

但严肃地说:

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

很好。我会考虑第一个代码段的气味。

@ TROANGOFE,但我认为这是一个更好的方法。这看起来有点不自然。你做得很好。对于不自然的-欢迎来到Objective-C:)不,那样真的很好。调用
子视图
最后一个对象
非常便宜,而且
从超级视图中移除
无论如何都必须完成。哎呀,我试图添加“[保留]”,结果添加了。。。所以我把它拿走了。
[[[self.view subviews] lastObject] removeFromSuperview];