Cocoa touch 如何识别显示的当前视图

Cocoa touch 如何识别显示的当前视图,cocoa-touch,Cocoa Touch,如果我有3个不同的视图,它们在3个相应的函数中定义,即: - (UIView *)getView1 { /*...*/ } - (UIView *)getView2 { /*...*/ } - (UIView *)getView3 { /*...*/ } 当需要特定视图时,这些将添加到self.view 我的问题是,我们如何知道当前正在显示哪些视图?是否有一个参数可以标识哪个视图是当前视图?您可以用一个整数标记每个视图,然后读取标记以确定哪个视图处于活动状态(假设您正在替换self.view)

如果我有3个不同的视图,它们在3个相应的函数中定义,即:

- (UIView *)getView1 { /*...*/ }
- (UIView *)getView2 { /*...*/ }
- (UIView *)getView3 { /*...*/ }
当需要特定视图时,这些将添加到
self.view


我的问题是,我们如何知道当前正在显示哪些视图?是否有一个参数可以标识哪个视图是当前视图?

您可以用一个整数标记每个视图,然后读取标记以确定哪个视图处于活动状态(假设您正在替换
self.view


假设在更改其他两个视图时要从self.view中删除它们,则可以使用[self superview]确定当前显示的视图。

所有UIView都有一个,当它显示在窗口中时设置为,当它被删除时设置为零。可以获取“窗口”属性的值,以查看视图当前是否显示在窗口中:

BOOL isDisplayed = self.view.window != nil;

您还可以在UIView的子类中重写,每当视图添加到窗口或从窗口中删除时,都会调用它。

视图是如何添加到self.view的?是否使用[self.view addSubview:…],如果使用,是否先删除现有子视图?多了解一点情况会有所帮助。
BOOL isDisplayed = self.view.window != nil;