WatchKit 的 willActivate() 函数。 Xcode 不喜欢 self.view.insertSubview
WatchKit willActivate() function. Xcode doesn't like self.view.insertSubview
我零错误。唯一的问题是我的模拟器中没有任何显示。我猜这是因为我在 awakeWithContext 中没有任何东西?我确实有 self.view.insertSubview(heartSymbol, atIndex: 1)
但有一个 Xcode 错误。
http://i.imgur.com/wzOIR2v.png "InterfaceController doesn't have a member named 'view'"。我还在 awakeWithContext() 函数中尝试了 self.heartSymbol = currentBeatPattern.heartImage
但仍然没有成功。另外我现在没有 willActivate() 函数,所以现在可以吗?
在编写此应用程序的开始阶段,我只是想在 newBeat() 函数的 if 循环中循环遍历 5 个 heartImages,然后将它们显示在 heartSymbol IBOutlet 中。
import WatchKit
import Foundation
struct BeatPattern {
var heartImage = WKInterfaceImage()
var description = "Normal"
var bpm = 80
var duration: Double {
return 60.0 / Double(bpm)
}
}
class InterfaceController: WKInterfaceController {
@IBOutlet weak var heartSymbol: WKInterfaceImage!
var currentBeatPattern = BeatPattern()
var currentBeatPatternIndex = 0
var beatPatternsArray = [
BeatPattern(heartImage: redHeartFast, description: "Fast", bpm: 180),
BeatPattern(heartImage: yellowHeartElevated, description: "Elevated", bpm: 140),
BeatPattern(heartImage: greenHeartNormal, description: "Normal", bpm: 80)]
override func awakeWithContext(context: AnyObject?) {
super.awakeWithContext(context)
self.view.insertSubview(heartSymbol, atIndex: 1) // Error
}
override func willActivate() {
super.willActivate()
}
override func didDeactivate() {
// This method is called when watch view controller is no longer visible
super.didDeactivate()
newBeat()
NSTimer.scheduledTimerWithTimeInterval(8,
target: self,
selector: Selector("newBeat"),
userInfo: nil,
repeats: true)
//beat()
}
WKInterfaceController 与 UIInterfaceController 没有直接关系。它没有视图 属性。 WatchKit 根本没有 UIViews——它有 WKInterfaceElements,但没有办法在运行时动态插入它们。您的所有界面元素都必须在 Xcode 的 Interface Builder 窗格中设置,尽管您可以在运行时隐藏和显示视图并更改一些设置,例如字符串或图像。
我零错误。唯一的问题是我的模拟器中没有任何显示。我猜这是因为我在 awakeWithContext 中没有任何东西?我确实有 self.view.insertSubview(heartSymbol, atIndex: 1)
但有一个 Xcode 错误。
http://i.imgur.com/wzOIR2v.png "InterfaceController doesn't have a member named 'view'"。我还在 awakeWithContext() 函数中尝试了 self.heartSymbol = currentBeatPattern.heartImage
但仍然没有成功。另外我现在没有 willActivate() 函数,所以现在可以吗?
在编写此应用程序的开始阶段,我只是想在 newBeat() 函数的 if 循环中循环遍历 5 个 heartImages,然后将它们显示在 heartSymbol IBOutlet 中。
import WatchKit
import Foundation
struct BeatPattern {
var heartImage = WKInterfaceImage()
var description = "Normal"
var bpm = 80
var duration: Double {
return 60.0 / Double(bpm)
}
}
class InterfaceController: WKInterfaceController {
@IBOutlet weak var heartSymbol: WKInterfaceImage!
var currentBeatPattern = BeatPattern()
var currentBeatPatternIndex = 0
var beatPatternsArray = [
BeatPattern(heartImage: redHeartFast, description: "Fast", bpm: 180),
BeatPattern(heartImage: yellowHeartElevated, description: "Elevated", bpm: 140),
BeatPattern(heartImage: greenHeartNormal, description: "Normal", bpm: 80)]
override func awakeWithContext(context: AnyObject?) {
super.awakeWithContext(context)
self.view.insertSubview(heartSymbol, atIndex: 1) // Error
}
override func willActivate() {
super.willActivate()
}
override func didDeactivate() {
// This method is called when watch view controller is no longer visible
super.didDeactivate()
newBeat()
NSTimer.scheduledTimerWithTimeInterval(8,
target: self,
selector: Selector("newBeat"),
userInfo: nil,
repeats: true)
//beat()
}
WKInterfaceController 与 UIInterfaceController 没有直接关系。它没有视图 属性。 WatchKit 根本没有 UIViews——它有 WKInterfaceElements,但没有办法在运行时动态插入它们。您的所有界面元素都必须在 Xcode 的 Interface Builder 窗格中设置,尽管您可以在运行时隐藏和显示视图并更改一些设置,例如字符串或图像。