4

WKInterfaceTableCellストーリーボードに から別の へのプッシュ セグエを作成しました WKInterfaceController( と呼ばれDetailInterfaceControllerます)。

行をタップすると、 didSelectRowAtIndex呼び出されていません。

私が間違っている場所と、文字列を渡す方法を知っている人はいますか?

テーブルインターフェイスコントローラー

didSelectRowAtIndexPath printステートメントは呼び出されません

@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
}

詳細InterfaceController

ラベルが設定されていません

@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.
}
4

3 に答える 3

6

呼び出されない理由:

table:didSelectRowAtIndex:ストーリーボード セグエを使用したため、 が呼び出されないのは正常です。WKInterfaceControllerドキュメントから:

アクション メソッドをストーリーボード ファイルのテーブルに接続した場合、WatchKit はこのメソッドを呼び出しません

選択した行データを渡す方法:

contextForSegueWithIdentifier:inTable:rowIndex:選択した行のコンテキストを返すために使用する必要があります。

override func contextForSegueWithIdentifier(segueIdentifier: String, inTable table: WKInterfaceTable, rowIndex: Int) -> AnyObject? {
    if segueIdentifier == "someSegueIdentifier" {
        return objectsArray[rowIndex]
    }
    return nil
}
于 2016-03-19T17:49:29.177 に答える