0

\我有一个视图控制器,它启动倒计时器并根据它更新按钮标签。问题是,当用户离开视图后回来我不想重新启动定时器o从暂停的时间继续。什么是最好的方式来激活它?NSTimer在视图控制器中倒计时

在应用程序委托中制作计时器并将通知发布到此视图控制器。由于其他视图控制器不需要它,因此它们不需要听任何通知。问题是我必须确保计时器已经运行到0来启用按钮操作系统,这意味着当视图再次加载时,我需要等待通知至少1秒,以确保他的时间真的到了。问题是在这段时间内显示的按钮标签。

如果视图控制器是一个标签栏项我不会有问题,但它是一个pushv视图挫败者,因此它是当用户点击后释放。

+0

@Mert谢谢你的回应,但我只是在nsuserdefaults和inviewwillaper中保存了过期时间,我读了过期时间戳。如果它在当前时间之前,这意味着当我在后台时,tiemr已经到期。如果它不知何故仍然向前,那么我开始定时器。创建Singleton类是好的,但你应该小心。我alrady有7个单独的吨管理员类,必须在应用程序运行时保存在内存中,所以我会避免创造额外的东西尽可能。 – 2012-08-03 09:22:17

+0

如果您只有一个,可以将有效期限保存到nsuserdefaults。对于多个日期,从userdefaults管理它们将非常困难。创建一个单元对象应该不会有问题,该对象包含一些很长的值,即使您有10个以上的单例对象... – Mert 2012-08-03 09:34:57

回答

1

只需创建一个单例对象来管理您的计时器。你可以从appdelegate创建它。 您可以随时从该对象中获得剩余时间(已开始 - datenow)。所以你不需要使用通知。在未分配时,在视图中未使用的每秒发送通知也不是个好主意。当您的视图被分配/进入屏幕时,可以每秒向该对象询问剩余时间并更新其标签或一些子视图等。您可以使用NSTimer对象轻松实现该视图。

您还可以在该单例对象中放置一个bool变量,该单例对象指示是否已触发到达。或检查剩余时间< 1。因此,您的视图在分配/显示时检查变量的值,然后您可以决定激活或取消激活按钮。