如果我有3个不同的视图,这些视图在3个相应的函数中定义,即:
- (UIView *)getView1 { /*...*/ }
- (UIView *)getView2 { /*...*/ }
- (UIView *)getView3 { /*...*/ }
当需要特定视图时,这些内容会添加到self.view
。
我的问题是,我们如何知道目前正在显示哪些观点?是否有一个参数可以识别哪个视图是当前视图?
答案 0 :(得分:5)
您可以使用整数标记每个视图,然后读取标记以确定哪个视图处于活动状态(假设您要替换self.view
)。
#define TAG_VIEW_1 1
#define TAG_VIEW_2 2
#define TAG_VIEW_3 3
...
[ [self getView1()] setTag:TAG_VIEW_1 ];
[ [self getView2()] setTag:TAG_VIEW_2 ];
[ [self getView3()] setTag:TAG_VIEW_3 ];
...
if ( self.view.tag == TAG_VIEW_1 ) {
// do something
}
else if ( self.view.tag == TAG_VIEW_2 ) {
// etc
}
...
答案 1 :(得分:3)
假设您在更改它们时从self.view中删除了其他两个视图,您可以使用[self superview]来确定当前显示哪个视图。
答案 2 :(得分:1)
所有UIView都有一个window property,它在窗口中显示时设置,并在删除时设置为nil。您可以获取window属性的值以查看当前是否在窗口中显示视图:
BOOL isDisplayed = self.view.window != nil;
您还可以在UIView的子类中覆盖willMoveToWindow:,只要在窗口中添加或删除视图,就会调用它。