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 字符串问题的主要内容,如果未能解决你的问题,请参考以下文章