2016-03-19 2 views
3

J'ai créé une séquence de diffusion dans le storyboard d'un WKInterfaceTableCell à un autre WKInterfaceController (appelé DetailInterfaceController).didSelectRowAtIndex n'étant pas appelé pour WKInterfaceTable

Lorsque je tape sur la ligne, didSelectRowAtIndex n'est pas appelée.

Est-ce que quelqu'un sait où je vais mal, et comment je peux passer la chaîne?

TableInterfaceController

didSelectRowAtIndexPath déclaration print n'est pas appelé

@IBOutlet var table: WKInterfaceTable! 
var objectsArray = ["1","2","3"] 
var object: String! 

override func table(table: WKInterfaceTable, didSelectRowAtIndex rowIndex: Int) { 
    self.object = self.objectsArray[rowIndex] 

    print(" object title: \(self.object)") 
} 


override func contextForSegueWithIdentifier(segueIdentifier: String) -> AnyObject? { 
    // You may want to set the context's identifier in Interface Builder and check it here to make sure you're returning data at the proper times 

    // Return data to be accessed in ResultsController 
    return self.object 
} 

DetailsInterfaceController

L'étiquette est pas défini

@IBOutlet var label: WKInterfaceLabel! 

override func awakeWithContext(context: AnyObject?) { 
    super.awakeWithContext(context) 

    // Make sure data was passed properly and update the label accordingly 
    if let val: String = context as? String { 
     self.label.setText(val) 
    } else { 
     self.label.setText("") 
    } 
    // Configure interface objects here. 
} 

Répondre

5

Pourquoi ce n'est pas appelé:

Il est normal table:didSelectRowAtIndex: de ne pas être appelé depuis que vous avez utilisé un story-board Segue. De la documentation WKInterfaceController:

Si vous avez connecté une méthode d'action à la table dans votre fichier story-board, WatchKit ne remet pas cette méthode.

Comment passer les données de la ligne sélectionnée:

Vous devez utiliser contextForSegueWithIdentifier:inTable:rowIndex: pour retourner le contexte de la ligne sélectionnée:

override func contextForSegueWithIdentifier(segueIdentifier: String, inTable table: WKInterfaceTable, rowIndex: Int) -> AnyObject? { 
    if segueIdentifier == "someSegueIdentifier" { 
     return objectsArray[rowIndex] 
    } 
    return nil 
}