仅当新的ViewController对象不存在时才创建它

时间:2010-10-12 11:58:51

标签: iphone uiviewcontroller

我使用以下代码调出视图

-(IBAction) openSomeView{
SomeView *sv = [[SomeView alloc]initWithNibName:@"SomeView" bundle:nil];
[self presentModalViewController:sv animated:NO];
[sv release];

}

如何检测此视图是否已经创建,如果已经创建,那么现在只显示它创建一个新对象?

由于

3 个答案:

答案 0 :(得分:1)

您不能使用此代码创建多个实例,因为您以模态方式呈现视图控制器。

否则,您可能会在班级中保留一个成员变量,并将其与nil进行核对。

编辑:或者您可以实施'Singleton'设计模式,如果这是您搜索的含义。

答案 1 :(得分:1)

首先在 @interface

中声明
SomeView *sv; 

你可以查一下

-(IBAction) openSomeView{
if(sv==nil)
sv = [[SomeView alloc]initWithNibName:@"SomeView" bundle:nil];
[self presentModalViewController:sv animated:NO];
[sv release];
}

答案 2 :(得分:0)

我的应用程序中有几个重量级的视图控制器。现在我正在处理这种情况如下:

  • 将MyViewController保存到appDelegate

  • 在“openSomeView”方法中我正在检查MyViewController是否已经创建,如果没有 - 创建它:

    -(IBAction) openSomeView {
        MyAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
    
    
    
        if ( !appDelegate.myViewController ) {
            appDelegate.myViewController = [[SomeViewController alloc] initWithNibName:@"SomeViewController" 
                                                                                bundle:nil];
        }
    
    
        [self presentModalViewController:appDelegate.myViewController animated:NO];
    }