Swift 3.0 字符串问题

Posted

技术标签:

【中文标题】Swift 3.0 字符串问题【英文标题】:Swift 3.0 String issue 【发布时间】:2016-10-07 21:12:52 【问题描述】:

我有一个自定义选择器视图,效果很好,但有一个问题。您可以再次单击该按钮,然后选择器视图将被关闭。但是当它关​​闭时,取消按钮中的文本变为空白并且不保持不变(“选择”是一个打开选择器视图的按钮,当您从选择器视图中选择某些内容以反映您选择的内容时,它的文本会发生变化。我是什么想要发生的是,如果您再次单击选择按钮(而不是选择器视图),则取消按钮中的文本不会更改并变为空白。

var pickValue:AnyObject? 
        didSet
            if let pickValue = pickValue
                Select.setTitle("\(pickValue)", for: UIControlState())
            else
                Select.setTitle("Select", for: UIControlState())
            
        
    

@IBAction func Show(_ sender: AnyObject) 
        let pickercontrol  = LCTableViewPickerControl(
            frame: CGRect(x: 0, y: self.view!.frame.size.height + 150, width: view.bounds.size.width - 50, height: 150),
            title: "Please pick an item",
            value: pickValue,
            items: ["minute", "hour", "day", "month", "year"],
            offset: CGPoint(x: 0, y: 0))
        pickercontrol?.tag = 1
        view.addSubview(pickercontrol!)
        pickercontrol?.show(in: view)  [weak self](sender, item) in
            guard let view = sender as? LCTableViewPickerControl else
                return
            
            view.dismiss()
            self?.pickValue = item as AnyObject?
        


    

The image when the picker view is initialized and your able to pick a value

Here is a picture of the problem. After you click the button again. The picker view dismisses and the text inside the button becomes blank. I want to change it so that if the view is dismissed and no value is chosen from the picker view then the text inside the button stays the same

【问题讨论】:

以后一定要使用“code sample”格式而不是“code sn-p”。代码 sn-p 用于设置简短的单行代码或函数名称。代码示例格式(通过缩进四个空格或突出显示并单击格式栏中的工具来完成)适用于长代码并添加滚动条等,并使较大的代码部分更具可读性。 我做到了。你认为你能解决它吗 不幸的是,我对 swift 一无所知。该网站的质量经过同行评审,我只是在帮助您的帖子看起来更吸引其他人的帮助。希望有人能找到答案。干杯! 【参考方案1】:

你需要设置你想要的 controlState。 for UIControlState.normal

【讨论】:

您可能还需要考虑安全地展开选项,而不是强制展开它们。如果 LCTableViewPickerControl 初始化器返回一个可选的,你可以初始化它,然后说:`guard let picker = pickercontrol else return ' 这将防止你在添加为子视图时强制展开(如果它为 nil 则崩溃)。 您最初在哪里设置按钮标题?如果您在“viewWillAppear”中执行此操作,它会在您关闭模式视图后再次触发,因此如果您在此处设置标题,它将设置为初始值。我不完全理解如此有限的图片发生了什么。 我现在无法使用 Skype。你的代码在 github 上吗? 我的 skype 和 github id 名称是 jackpaster22。你可以在 Skype 或 github 上给我发消息 你能帮帮我吗【参考方案2】:

另一个选项是存储当前文本,并在单击关闭按钮时将选择器选择的标题设置为先前存储的字符串。

这将使您能够滚动进行任意数量的选择,并在解除时恢复为原始值。

【讨论】:

以上是关于Swift 3.0 字符串问题的主要内容,如果未能解决你的问题,请参考以下文章

在swift 3.0中将坐标数组转换为geojson字符串

无法在 swift 3.0 中转换正确的设备令牌

如何使用 Swift 3.0 解析这个 JSON 对象

Swift 3.0,Firebase:如何获取最后添加的记录

swift 3.0 的字符串用法

Swift - 从 Double 中删除尾随零