从另一个Button Objective-C停止IBAction

时间:2012-11-22 13:56:09

标签: objective-c uibutton ibaction

我不知道如何阻止IBAction。我需要的是:我按下按钮,然后调用运行约5分钟的IBAction。我想要取消按钮,按下时,将从第一个按钮停止IBAction。

我该怎么做?

代码:

- (IBAction)download:(id)sender {


    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^ {

        // Determile cache file path
        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);


        for (i=0;i<=7;i++) {

            //Updating progressView and progressLabel

            dispatch_async(dispatch_get_main_queue(), ^ {
                progressSlider.progress = (float)i/(float)299;
                progressLabel.text = [NSString stringWithFormat:@"Загружено: %d из 299",i];
            });

            NSString *filePath = [NSString stringWithFormat:@"%@/avto-0-%d.html", [paths objectAtIndex:0],i];

            // Download and write to file
            NSString *mustUrl = [NSString stringWithFormat:@"http://www.mosgortrans.org/pass3/shedule.php?type=avto&%@", [listOfAvtoUrl objectAtIndex:i]];
            NSURL *url = [NSURL URLWithString:mustUrl];
            NSData *urlData = [NSData dataWithContentsOfURL:url];


            [urlData writeToFile:filePath atomically:YES];

        }

    });


}

2 个答案:

答案 0 :(得分:1)

在单击IBAction时,调用另一个在单独的线程中运行代码的函数。现在,您可以根据需要停止/取消该线程。

答案 1 :(得分:0)

创建一个名为isCancelled的BOOL变量。当您单击另一个按钮时,将isCancelled设置为YES。在你的下载功能中设置这个for循环:

if (isCancelled)return;