2015-08-03 6 views
0

Je suis assez nouveau pour travailler avec Swift et j'ai un problème: J'ai deux classes dans mon App WatchKit.ne peut pas appeler 'setScore' avec une liste d'arguments de type '(Int)'

Classe 1:

func setScore(inputScore: Int) { 
    scoreLabel.setText(String(inputScore)) 
} 

... et classe 2 devraient avoir accès à cette func:

var countNumber = 0 
... 

self.presentControllerWithName("scorePage", context: self) 
      scorePage.setScore(countNumber) 

Mais je reçois toujours une erreur: cannot invoke 'setScore' with an argument list of type '(Int)'

Je ne savoir comment résoudre ce problème et ce serait génial si quelqu'un peut m'aider :) Merci

+0

que vous aviez déjà la classe précédemment initialisées classe 2? – CarlosGz

+0

J'ai: 'class class2: WKInterfaceController {...' – user5185447

+0

La variable "scorePage" a été initialisée correctement? pouvez-vous accéder à d'autres méthodes de classe à travers elle? – CarlosGz

Répondre

-1

Je ne suis pas sûr de ce que vous essayez de faire exactement, mais je crois que vous voulez transmettre des données d'un WKInterfaceController à d'autres WKInterfaceController, vous pouvez donc utiliser le contexte:

self.presentControllerWithName (« scorePage », le contexte: countNumber)

Une fois que vous êtes dans le récepteur WKInterfaceController vous devriez recevoir le countNumber redéfinissant la awakeWithContext: func (le contexte var doit avoir la valeur countNumber maintenant) et vous pouvez définir le score: self.setScore (contexte)

PS ne pas oublier de "cast" la valeur de contexte de AnyObject à int

Exemple d'utilisation Obj-C et un NSNumber au lieu de int:

Dans la classe d'origine:

[self pushControllerWithName:@"scorePage" context:countNumber]; 

dans la classe de destination:

- (void)awakeWithContext:(id)context { 
    [super awakeWithContext:context]; 

    if ([context isKindOfClass:[NSNumber class]]) { 
     NSNumber *num = (NSNumber *)context; 
     [self setScore:num]; 
    } 

} 
+0

Je suis en essayant de vous aider avec les quelques informations que vous fournissez, pourquoi placez-vous ma réponse comme fausse? – CarlosGz

+0

non, je n'ai pas voté vers le bas – user5185447

+0

désolé, alors j'espère que ma réponse vous aider – CarlosGz

0

C'est un peu un coup de feu dans le noir ....

En utilisant setXXX comme nom de fonction dans une classe qui hérite d'une classe Objective-C peut être problématique car il ressemble au setter pour une propriété Objective-C.

En fait, je réfuterais ceci pour tirer parti des fonctionnalités de Swift, par ex.

class MyClass 
{ 
    var score: Int = 0 
    { 
     didSet 
     { 
      scoreLabel.setText(String(score)) 
     } 
    } 
    // everything else 
} 

Et invoquer comme celui-ci

self.presentControllerWithName("scorePage", context: self) 
scorePage.score = countNumber