(接近解决,但还没有完全解决)(我的临时解决方案是使用 void 方法并在每个按钮中调用它,这样我可以编辑多个按钮使用的代码,而不是在进行改进时必须编辑每个单独的按钮 if 语句)

我敢打赌这是我犯的一个非常简单的错误,但我找不到它。

我试图在整数达到 50 时显示先前定义的警报;这是我在 viewDidLoad 方法中使用的 if 语句:

if(count == 50){
    [alert show];
}

当整数达到 50 时,什么也没有发生。我哪里出错了?

整数在 IBAction 中像这样改变:

 count+=10;

如果我删除 if 语句并仅保留警报显示,它将在视图加载时显示。所以警报不是问题。

有人指出,如果这段代码只在viewDidLoad方法中运行一次,并且稍后将整数更改为50,那么它不会等待整数为50,而是会看到值不是50而不执行永远保持警惕。

那么我如何用代码观察整数并执行警报 什么时候 整数为 50, 但是不在增加整数的操作中调用警报?

哦,顺便说一句,我尝试在增加整数的操作中调用 if 语句,这很有效,但我有大约 100 个按钮来增加整数计数,并检查每个按钮中的值是否为 50 似乎有点空间所有的复制和粘贴都非常耗时。另外,我计划在整数达到 50 时不仅仅发出警报。我确信有一种更有效的方法来检查整数计数的值是否为 50。

有帮助吗?

解决方案

尝试增加

if(count == 50){
    [alert show];}

在同一IBAction为添加10后右计数。

其他提示

当你说

  

但是,当整数达到50什么也没有发生

这使我相信,你改变后的整数值的的-viewDidLoad方法运行。你的if语句只计算一次,当视图加载,所以如果你在该点之后改变整数的值,你就需要添加警报视图无论是改变整数。

此要细 - 目标C是基于C的顶部上的薄层,从而有效的C语法应该工作。什么样的变量是算什么?你想将它定义为int,不是一个NSNumber。的NSNumber是一个封装的数,因此它可以被用作一个Objective-C对象的类 - 但使用==语法你不能对它们进行比较

希望帮助!

检查出键 - 值观察

如果你使计数器的属性,你应该能够设置一个观测时触发的价值变化。在这种观察者,你可以做你的支票来触发警报。

尝试

NSLog(@"count is %d",count); 

和看问题的存在。这很难说计数是否被弄乱或警告,但问题不是与你的if语句本身。

一对夫妇的事情试试

  • 设置一个突破点,如果声明
  • 改变如果声明 count >= 50
  • 是真的int或者它是一个浮起来?

最简单的答案:拥有一切可以增值的东西 count 通过控制器中的一种方法来执行此操作,并让该方法检查是否是时候显示警报了。

更复杂的答案涉及观察值: 键值观察. 。您可以设置一个观察者来观察该值,并在达到 50 时发出警报。但这比仅仅引入一个中央方法来处理行为需要更多的代码,并且更复杂且更容易出现错误。

我不明白,你为什么不能显示该递增计数器代码警报?它突出部分需要在UIAlertView中的参考...或张贴通知提醒持有码听。

viewDidLoad中仅运行时的视图被加载 - 创建时即是。之后,它不会再次运行,除非特殊情况。

如果你想让它每次按下一个按钮时检查的次数和增加数量,然后在IBAction为做到这一点。

您可以使一个检查像这样的计数器的方法

-(BOOL) checkCounter
{
  return count == 50;
}

和调用它在你的按钮,像这样你增加后:

if ([self checkCounter])
{
//do stuff when it's 50
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top