我正试着在-273到273之间的手表套件中选择一个视图。遗憾的是,手表套件只允许一个字符串作为标题,所以我使用.map转换了我的范围。现在,当我运行应用程序时,它显示的范围从0到546,但不会进入负范围我尝试更改两个值,但选择器总是从0开始,不会再返回。
我把问题分为以下几行:

let pickerItems: [WKPickerItem] = (-273...273).map {
        let pickerItem = WKPickerItem()
        pickerItem.title = "\($0)"
        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 = "\($0)"
            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
        }

    }
}

arrays - WKPickerItems和范围-LMLPHP

10-05 21:41