uialertview和委托(代码延迟)

时间:2012-09-09 00:48:58

标签: iphone objective-c xcode ipad

我正在检查文件是否已经存在,如果是,我正在警告用户是否要更换文件。我正在使用警报视图和代表。 然而,当我在用户选择YES或NO时使用模拟器运行它时,程序已经运行通过它并且blnVal没有值,无论如何 我不确定我在这里缺少什么。?  (我在这里搜索了数据库,但找不到任何相关的具体问题)

  -(void) chkFile2Save
    {
        short tst;

        NSString* documentsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];

        NSString* foofile = [documentsPath stringByAppendingPathComponent:pln2Save.text];
        BOOL fileExists = [[NSFileManager defaultManager] fileExistsAtPath:foofile];



        if(fileExists)
        {
            blnVal=NO;
           [self AskFileSave];
        }

        //blnVal always NO for whatever reason ... ?
        if(blnVal==NO)
            tst=5;
              //...
        else {
            tst=10;
            //..
        }


    }



    - (void) AskFileSave
    {
        UIAlertView *alertFileSave = [[UIAlertView alloc] initWithTitle:@"" message:@"File already exists.  Override the file with current data?" delegate:self cancelButtonTitle:@"No" otherButtonTitles:@"Yes", nil];

        [alertFileSave setTag:10];
        [alertFileSave show];
        [alertFileSave release];
    }

    -(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
    {


        //override file exists
        if([alertView tag]==10)
        {
            if(buttonIndex == 1)
            {
                blnVal=YES;
            }
            else
            {
                blnVal=NO;
            }

        }
    }

1 个答案:

答案 0 :(得分:0)

你正在打电话

[self AskFileSave];

将执行

- (void) AskFileSave

执行将返回:

//blnVal always NO for whatever reason ... ?
        if(blnVal==NO)
            tst=5;
              //...
        else {
            tst=10;
            //..
        }

您应该将代码的那一部分移动到委托方法,您可以选择用户选择的内容,因为UIAlerView不会停止代码执行。

-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
    //override file exists
    if([alertView tag]==10)
    {
        if(buttonIndex == 1)
        {
            blnVal=YES;
            tst = 10;
        }
        else
        {
            blnVal=NO;
            tst=5;
        }

    }
}

我希望它有所帮助!