2

我正在尝试使用 Table 构建一个简单的 WatchKit 应用程序。每行都有一个标签。这是我的 TableRowController 类:

import WatchKit

class TaskTableRowController: NSObject {

    @IBOutlet var taskName: WKInterfaceLabel!
}

在我的 InterfaceController 中,我向表中添加了一行并尝试设置标签的文本。但是 taskList.rowController(at: 0) 没有找到一行,所以 Label 没有被修改。

import WatchKit
import Foundation

class InterfaceController: WKInterfaceController {

    @IBOutlet var taskList: WKInterfaceTable!

    override func awake(withContext context: Any?) {
        super.awake(withContext: context)

        // Configure interface objects here.
        taskList.setNumberOfRows(1, withRowType: "TaskRow")
        if let x = taskList.rowController(at: 0) as? TaskTableRowController
        {
            x.taskName.setText("Hello World")
        }
    }

    override func willActivate() {
        // This method is called when watch view controller is about to be visible to user
        super.willActivate()
    }

    override func didDeactivate() {
        // This method is called when watch view controller is no longer visible
        super.didDeactivate()
    }

}

这是 Interface Builder 的一些屏幕和输出: 界面生成器 手表模拟器

4

1 回答 1

0

替换以下代码,它适用于我:

    taskList.setNumberOfRows(10, withRowType: "TaskRow")

    for index in 0..<taskList.numberOfRows {
        if let controller = taskList.rowControllerAtIndex(index) as? TaskTableRowController {
            controller.taskName.setText("Hello World")
        }
    }

我看过屏幕截图,但是请。交叉检查并确保以下几点:

  • WKInterfaceLabel(taskName)IBOutlet您的 TaskTableRowController.

  • TaskTableRowController标识符设置为“TaskRow”。

  • WKInterfaceTable(taskList)有一个 IBOutlet。

  • 您的行“TaskTableRowController”的自定义类已设置。

希望对你有帮助!!!

如果您有任何疑问,请告诉我。

于 2016-09-16T06:35:38.653 回答