按下按钮后iOS重置浮动

Posted

技术标签:

【中文标题】按下按钮后iOS重置浮动【英文标题】:iOS reset float after button press 【发布时间】:2014-03-08 04:46:45 【问题描述】:

我有一个应用程序可以跟踪您的速度和高度。它的工作原理是,当您按下开始按钮时,它开始跟踪您,当您按下停止时,它停止,当您按下重置时,它清除所有内容并返回开始按钮。我是怎么做到的,我有一个显示速度的隐藏标签,当你按下按钮时它没有隐藏,当你按下停止时它再次隐藏,我让另一个标签说出它说的最后一句话。我还有一个最大速度标签,显示您达到的最高速度。我用一个浮点数做到了这一点。我对最大速度标签也有同样的情况,当您按下重置标签时,最大速度标签上说的最后一件事会清除,然后当您按下开始时,最大速度标签又回来了。我遇到的问题是最大速度标签本身不会重置。当我再次按下开始时,最大速度标签仍会显示上次的值。那么当按下按钮重置时如何重置最大速度标签浮动呢?

编辑

这是我用过的代码...

重置标签...

maxspeedlabel.text = @"0.00";

对于浮动...

- (void)locationUpdate:(CLLocation *)location 
speedLabel.text = [NSString stringWithFormat:@"%.2f", [location speed]*2.236936284];
altitudeLabel.text = [NSString stringWithFormat:@"%.2f", [location altitude]*3.2808399];
latitudeLabel.text = [NSString stringWithFormat:@"Lat: %f", location.coordinate.latitude];
longitudeLabel.text = [NSString stringWithFormat:@"Long: %f", location.coordinate.longitude];
errorlabel.text = @"   ";

  float currentSpeed = [location speed]*2.236936284;
if(currentSpeed - maxSpeed >= 0.01)
    maxSpeed = currentSpeed;
    maxspeedlabel.text = [NSString stringWithFormat: @"%.2f", maxSpeed];



float currentAltitude = [location altitude]*3.2808399;
if(currentAltitude - maxAltitude >= 0)
    maxAltitude = currentAltitude;
    maxaltitudelabel.text = [NSString stringWithFormat: @"%.2f", maxAltitude];

谢谢

【问题讨论】:

【参考方案1】:

每次按下开始时添加maxspeedlabel.text = @""; 以清除标签,然后在需要时使用新标签进行更新。

【讨论】:

这可能是一个很好的解决方案。尽管我猜测您当前的解决方案需要 fabs(currentSpeed - maxSpeed) >= 0.1 这是我所做的,但它所做的只是改变文本,它不会重置它,所以它可以说 0.00 但我不会说其他任何东西,除非它高于过去的最高速度 【参考方案2】:
currentSpeed - maxSpeed >= 0.01

为什么要这样比较?你应该不使用

if(currentSpeed=>maxSpeed)

我相信

maxSpeed = currentSpeed;
maxspeedlabel.text = [NSString stringWithFormat: @"%.2f", maxSpeed];

错了,我觉得应该是

currentSpeed = maxSpeed;
maxspeedlabel.text = [NSString stringWithFormat:@"%.2f", maxSpeed];

否则你会将你的 maxSpeed 设置得更高,这可能是不正确的。

错误可能是在currentSpeed计算中,你检查过它是否进入了if语句吗?

【讨论】:

该方法效果很好,我只需要知道如何重置它。就像我将按下重置按钮一样,将会发生的只是文本将更改为 0.00,但最大速度仍然不会更新,直到您达到高于上一个最大速度的速度。所以我需要知道如何重置它,让它每次都从 0 开始 你更新的代码是什么?你是否已经有了这个:maxspeedlabel.text = @"";因为这不会重置它。 maxspeedlabel.text = [NSString stringWithFormat:@"%.2f", maxSpeed];据我了解,您现在设置了新的最高速度,即没有 maxspeed。我认为这段代码不会有问题。 我认为这是一个误会,对不起,我的意思一直是最高速度。我有一个显示最高速度的标签,当我按下停止时我想重置它,所以当我再次按下开始时,我不必超过我上次达到的最高速度。它现在所做的只是显示 0.00,但最高速度仍未重置为 0 我认为您应该发布更新后的代码,我现在看不出有什么问题。 可能类似这样:***.com/questions/19966317/…【参考方案3】:

我想通了。当我点击按钮时,我必须将浮点数设置为 0...

maxSpeed = 0;

【讨论】:

以上是关于按下按钮后iOS重置浮动的主要内容,如果未能解决你的问题,请参考以下文章

按下 Flutter 的浮动操作按钮的简单对话框

Mac重置NVRAM和SMC的方法

按下按钮后隐藏状态栏(iOS)

当我更改视图时,为啥我的按钮首选项/参数会重置?

按下主页按钮后从系统覆盖窗口启动 Activity

Swift - 按下按钮时,如果动画已经在播放,则将其重置为开始