繁体   English   中英

开始/停止按钮无法正常运行iOS

[英]Start/stop button not working correctly iOS

我陷入了一个非常菜鸟般的问题,我似乎无法以任何方式解决它,我确信我正在忽略某些东西,但是为了上帝的缘故无法解决!!

好的,因此我的应用程序中有一个“开始/停止”按钮,如果该操作已暂停,它应该恢复该操作,如果该操作已经在运行,则应该暂停该操作。 这是我的代码:

- (IBAction)pause:(id)sender {

    if(paused){
        [self.progressBar resumeLayer];
        paused = false;
        NSLog(@"resume");
    }

    if(!paused){
        [self.progressBar pauseLayer];
        paused = true;
        NSLog(@"pause");

    }

}

问题是:当我运行该应用程序并按按钮暂停时,它可以正常工作,但是此后它根本不会恢复。 NSLogging到控制台后,我发现恢复后立即调用了暂停。 第一:仅单击一次按钮,如何调用两个相反的方法? 第二:为什么我的BOOL检查不起作用?

编辑:如果我将if语句之一换成else if,则可以正常工作...为什么呢?

谢谢!

请以Paused变量作为BOOL并使用YES和NO进行设置

什么是“暂停”? 全局变量? 一个实例变量? 我不知道。

按照惯例,实例变量应以下划线字符开头,如果您仅定义属性,则它们将自动执行。 这样,人们至少对正在发生的事情有所了解。

BOOL值的约定为是或否。 不正确或错误。

真正的累头当然是代码中的愚蠢错误。 如果暂停==是,则执行第一个if,暂停设置为NO,然后在下一个测试中检查暂停==否-此时为。

通过逐行逐步调试器中的代码,您会发现很容易。

- (IBAction)pause:(id)sender {

    if(paused){
        [self.progressBar resumeLayer];
        NSLog(@"resume");
    }

    if(!paused){
        [self.progressBar pauseLayer];
        NSLog(@"pause");
    }

    paused = !paused;

}

您应该在else块中检查其他状态,而不要使用两个if语句。

现在对您失败的原因是,您将暂停状态更改为false并且在完成第一个if语句后立即检查!paused 只需将其更改为false即可。

要解决此问题,您可以使用else if (!paused)语句,或者如果已暂停的变量是布尔值, else if (!paused)可以使用纯else语句。

像这样:

- (IBAction)pause:(id)sender {

    if(paused){
        [self.progressBar resumeLayer];
        paused = false;
        NSLog(@"resume");
    } else {
        [self.progressBar pauseLayer];
        paused = true;
        NSLog(@"pause");
    }
}
1) Declare first BOOL variable in @interface ViewController ()
Ex. bool start;
2) Initialize BOOL variable in viewDidLoad method Like this start = YES;
3) now write code in button Action Like this

- (IBAction)btnPause:(UIButton *)btn {
    if (start == YES)
    {
        btn.backgroundColor = [UIColor blackColor];
        start = NO;
    }
    else
    {
        btn.backgroundColor = [UIColor whiteColor];
        start = YES;
    }
}

// Its change button background color but you can use your Logic.

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM