【发布时间】:2017-05-18 03:18:18
【问题描述】:
这里是初学者 Swift 程序员和堆栈溢出的新手。
我正在尝试制作一个简单的任务列表/toDoPlanner,有点类似于 iPhone 上的 Apple 提醒应用。
我的目标是针对这个特定问题,当用户单击某个文本字段(位于 stackView 中)内的 UIButton 时,该 UIButton 应更改为 UILabel。
这是我如何在用户完成输入任务后显示按钮。这工作正常:
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
self.view.endEditing(true)
if(textField == textField1) // if the first text field is pressed
{
let image = UIImage(named: "To Be Completed Circle.png")
button = UIButton(frame: CGRect(x: 340, y: 56, width: 30, height: 30));
button.setBackgroundImage(image, for: UIControlState.normal)
self.view.addSubview(button)
button.addTarget(self, action:#selector(self.pressed), for: .touchUpInside)
}
...
然后,当用户单击它以将该按钮更改为 UILabel 时,我尝试更改 UIButton:
func pressed(textField: UITextField!) {
let image = UIImage(named: "Checkmark.png")
if(textField == textField1)
{
button.removeFromSuperview()
let label = UILabel(frame: CGRect(x : 340, y :56, width: 30, height: 30))
label.backgroundColor = UIColor(patternImage: image!)
self.view.addSubview(label)
}
整个 if 块没有被读取,我不太清楚为什么。我假设它与 UIButton 和 UITextField 的单独属性有关。
感谢任何帮助,任何其他 iOS 编程技巧都会有所帮助!
如果您需要更多详细信息,请告诉我。
【问题讨论】:
-
你可以很容易地做到 button.isEnabled = false 来达到类似的效果。或相应地隐藏和显示按钮和/或标签。这两个选项都应该有效。
-
我想要做的是用户在第一个文本字段中输入“任务”。按回车后,任务旁边会出现一个灰色圆圈(按钮)。我希望用户能够单击此按钮,这会将灰色圆圈更改为带有红色复选标记(标签)的灰色圆圈,表示任务已完成。这是否阐明了我想要做的事情?
-
我会将其保留为按钮并更改与该按钮关联的图像。这样每次他们点击按钮时,它都会在选中和未选中之间切换。
-
@rMickeyD 如何更改与某个按钮关联的图像?
标签: ios swift uibutton uitextfield