WKPickerItems 和范围

WKPickerItems and ranges

我正在尝试在 Watch Kit 中创建一个从 -273 到 273 的选择器视图。遗憾的是 Watch Kit 只允许将字符串作为标题,所以我使用 .map 转换了我的范围现在当我 运行 应用程序时显示从 0 到 546 的范围,但不会进入负数范围我尝试更改这两个值,但选择器始终从 0 开始并且不会再返回。

我将问题分为以下几行:

let pickerItems: [WKPickerItem] = (-273...273).map {
        let pickerItem = WKPickerItem()
        pickerItem.title = "\([=10=])"
        return pickerItem
    }

我刚刚试了一下,您的代码确实在选择器中显示了负值。然后,当用户选择一个值时,您必须获取该值并使用它从 pickerItems 数组中检索 "real" 值:

class InterfaceController: WKInterfaceController {

    @IBOutlet var picker: WKInterfacePicker!
    var pickerItems: [WKPickerItem]?

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

        pickerItems = (-273...273).map {
            let pickerItem = WKPickerItem()
            pickerItem.title = "\([=10=])"
            return pickerItem
        }
        picker.setItems(pickerItems)
    }

    @IBAction func pickerDidChange(value: Int) {
        let pickedItem = pickerItems![value] // value = 0..576
        if let pickedValue = Int(pickedItem.title!) {
            print(pickedValue) // -273..273
        }

    }
}