我正在玩WatckKit,使用NSTimer以模态方式呈现一个接口控制器,一切正常,但我遇到了一个奇怪的问题。
我使用整数来跟踪控制器的状态, -2 表示监视界面已初始化, -1 表示用户已取消模态显示controller和 0 表示当前显示模态控制器。我正在使用这些任意值,因为我不相信有机制通知父控制器模型控制器已被解除。
在WKInterfaceController的 willActivate 方法中,该值设置为 -1 。来自Apple文档:
willActivate方法可让您知道界面的时间 在Apple Watch上可见
所以这是我的演示应用程序的代码。请注意,呈现布尔值仅用于确保模态接口仅呈现一次:
var i = -2
var presented = false
var timer:NSTimer?
override func awakeWithContext(context: AnyObject?) {
super.awakeWithContext(context)
timer = NSTimer.scheduledTimerWithTimeInterval(2, target: self, selector: Selector("time"), userInfo: nil, repeats: true)
}
func time() {
println("\(NSDate().description) : \(i)")
if(!presented) {
presentControllerWithName("Interface", context: nil)
i = 0
presented = true
}
}
override func willActivate() {
super.willActivate()
if(i == 0) {
i = -1
}
}
现在,如果我们观察println给出的输出,这就是我得到的:
2015-05-23 02:22:16 +0000 : -2
2015-05-23 02:22:16 +0000 : -2
2015-05-23 02:22:18 +0000 : 0
2015-05-23 02:22:18 +0000 : 0
2015-05-23 02:22:20 +0000 : 0
2015-05-23 02:22:20 +0000 : 0
2015-05-23 02:22:22 +0000 : 0
2015-05-23 02:22:22 +0000 : 0
2015-05-23 02:22:24 +0000 : 0
2015-05-23 02:22:24 +0000 : -1
2015-05-23 02:22:26 +0000 : 0
2015-05-23 02:22:26 +0000 : -1
2015-05-23 02:22:28 +0000 : 0
2015-05-23 02:22:28 +0000 : -1
2015-05-23 02:22:30 +0000 : 0
2015-05-23 02:22:30 +0000 : -1
一开始我们打印 -2 ,这很好,因为整数被初始化为。然后显示模态界面,值变为 0s 。当界面被解除时,将激活并将其值更改为 -1 ,但在控制台输出中,该值在-1和...之间振荡。 0?我不知道为什么会这样。另一个问题是为什么值每2秒打印两次?