PresentModalViewController不会停止工作流程

时间:2012-01-16 22:51:40

标签: ios xcode modalviewcontroller

我的应用程序在加载检查以查看用户是否在文件系统中有文件,如果不是,它会使用presentModalViewController弹出一个视图控制器,并且在用户使用该视图控制器登录后,我的应用程序应该得到来自网络的一些数据。

我的问题是,在presentModalViewController之后,视图控制器会弹出,但presentModalViewController之后的代码会继续运行,而不会等待VC返回。

我的代码:

- (void)viewDidLoad
{
    [self getPasswordFromFile];
    responseData = [[NSMutableData data] retain];
    NSString *URL= [NSString stringWithFormat:@"http://localhost/domything/get_status.php?ownerid=%@", nOwnerID];
    NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:URL]];
    [[NSURLConnection alloc] initWithRequest:request delegate:self];    
    [super viewDidLoad];
}


-(void)getPasswordFromFile
{
    NSArray *arrayPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *docDirectory = [arrayPaths objectAtIndex:0];
    NSString *filePath = [docDirectory stringByAppendingString:@"/pwfile"];
    NSError *error;
    NSString *fileContents = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:&error];
    if(fileContents==nil)
    {
        // Show registration screen
        LoginScreenVC *vcLoginScreen = [[[LoginScreenVC alloc] init] autorelease];
        [vcLoginScreen setModalTransitionStyle:UIModalTransitionStyleCrossDissolve];
        [self presentModalViewController:vcLoginScreen animated:YES];
    }
    NSArray *arr = [fileContents componentsSeparatedByString:@":"];
   // NSLog(@"ownerid is:%@, password is: %@", [arr objectAtIndex:0], [arr objectAtIndex:1]);        
    password = [arr objectAtIndex:1];
    nOwnerID = [arr objectAtIndex:0];
    [password retain];
    [nOwnerID retain];
}

1 个答案:

答案 0 :(得分:2)

那是因为它是如何运作的。 presentModalViewController:animated:以模态方式呈现视图控制器,然后返回。如果你想像这样拆分你的应用程序,那么你需要从提供的控制器发送信号回到父控制器,而不是完成它,并且应该做你需要做的事情。

所以一种方法是使用委托模式。看一下这个Apple doc,就如何做到你想要做的事情提供一些深入的建议。