Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays WKPickerItems和ranges_Arrays_Swift_Dictionary_Range_Watchkit - Fatal编程技术网

Arrays WKPickerItems和ranges

Arrays WKPickerItems和ranges,arrays,swift,dictionary,range,watchkit,Arrays,Swift,Dictionary,Range,Watchkit,我试图在手表套件中创建一个从-273到273的选择器视图。遗憾的是,Watch Kit只允许字符串作为标题,所以我现在使用.map转换了我的范围。当我运行应用程序时,它显示的范围是从0到546,但不会变为负值。我尝试更改这两个值,但选择器始终从0开始,不会再返回 我将问题分为以下几行: let pickerItems: [WKPickerItem] = (-273...273).map { let pickerItem = WKPickerItem() picke

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

我将问题分为以下几行:

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

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

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
        }

    }
}