0

ファイルが既に存在するかどうかを確認しています。存在する場合は、ファイルを置き換えたいかどうかをユーザーに警告しています。アラート ビューとデリゲートを使用しています。ただし、ユーザーが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;
            }

        }
    }
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 に答える