我很擅长使用Swift并遇到问题: 我的WatchKit应用程序中有两个类。
第1课:
func setScore(inputScore: Int) {
scoreLabel.setText(String(inputScore))
}
...和Class 2应该可以访问这个函数:
var countNumber = 0
...
self.presentControllerWithName("scorePage", context: self)
scorePage.setScore(countNumber)
但我总是收到错误:cannot invoke 'setScore' with an argument list of type '(Int)'
我不知道如何解决这个问题,如果有人能帮助我会很棒:) 感谢
答案 0 :(得分:0)
这在黑暗中有点像......
在从Objective-C类继承的类中使用setXXX
作为函数名称可能会有问题,因为它看起来像是Objective-C属性的setter。
事实上,我会重构这一点以利用Swift功能,例如
class MyClass
{
var score: Int = 0
{
didSet
{
scoreLabel.setText(String(score))
}
}
// everything else
}
并像这样调用
self.presentControllerWithName("scorePage", context: self)
scorePage.score = countNumber
答案 1 :(得分:-1)
我不确定你到底想要做什么,但我相信你想将数据从一个WKInterfaceController传递到其他WKInterfaceController,所以你可以使用上下文:
self.presentControllerWithName(" scorePage",context:countNumber)
一旦你进入接收器WKInterfaceController,你应该收到覆盖awakeWithContext:func的countNumber(上下文var现在应该有countNumber值),然后你可以设置得分: self.setScore(上下文)
PS不要忘记"演员" AnyObject到int 的上下文值使用Obj-C和NSNumber而不是int:
的示例在原始类中:
[self pushControllerWithName:@"scorePage" context:countNumber];
在目标类中:
- (void)awakeWithContext:(id)context {
[super awakeWithContext:context];
if ([context isKindOfClass:[NSNumber class]]) {
NSNumber *num = (NSNumber *)context;
[self setScore:num];
}
}