2008-12-17 38 views
3

如果我有其在3层对应的功能,即定义了3周不同的观点:如何确定当前视图这是对显示

- (UIView *)getView1 { /*...*/ } 
- (UIView *)getView2 { /*...*/ } 
- (UIView *)getView3 { /*...*/ } 

这些是必需的特定视图当加入到self.view

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

+0

如何将视图添加到self.view?你使用[self.view addSubview:...],如果是这样,你是否先删除现有的子视图?多一点信息会有所帮助。 – 2008-12-17 18:39:43

回答

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 
} 
... 
3

假设当改变他们可以使用[自上海华],以确定哪一个是当前显示的要删除从self.view其它两个视图。

1

所有的UIView的时候都被显示在一个窗口它,当它被删除设置为nil被设置一个window property。你可以在窗口属性的值,看看是否正在显示在窗口中的视图:

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

您还可以覆盖willMoveToWindow:中的UIView的子类,每当视图添加到它会被称为或从窗口中移除。

相关问题