【问题标题】:changing a programmatically made UIButton to UILabel within certain textFields or stackViews?在某些 textFields 或 stackViews 中以编程方式将 UIButton 更改为 UILabel?
【发布时间】: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


【解决方案1】:

您的 textField 未与按钮关联,即使您使用 textFieldShouldReturn 函数创建它也是如此。所以你的目标(self.pressed)没有收到任何 textField 参数,并且将为 nil。因此,您的 textField == textField1 永远不会是真的。

如果您要实现任务列表,更简单的方法是将每个新任务添加到 tableView。然后您就可以将按钮和标签(用于任务名称)与部分和行相关联。

更改按钮的图像而不是删除它并在其位置创建 UILabel 也会容易得多。

【讨论】:

  • 我明白了。虽然我可以通过这种方式让 textField == textField1 为真,但有什么办法吗?
猜你喜欢
  • 1970-01-01
  • 2011-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-27
  • 2015-10-15
相关资源
最近更新 更多