0

我正在检查文件是否已经存在,如果存在,我会提醒用户是否要替换文件。我正在使用警报视图和委托。但是,当我在用户选择“是”或“否”时使用模拟器运行它时,程序已经运行通过它并且 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;
            }

        }
    }
4

1 回答 1

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;
        }

    }
}

我希望它有帮助!

于 2012-09-09T01:01:10.813 回答