【问题标题】:UISwitch decides if another UITableViewCell is editableUISwitch 决定另一个 UITableViewCell 是否可编辑
【发布时间】:2015-09-30 00:29:58
【问题描述】:

我在一个部分中有三个自定义表格视图单元格。第一个单元格有一个UISwtich。我想要的是,当UISwitchON 时,其他两个表格视图单元格的UITextField 是可编辑的,否则不可编辑。 有可能吗?

【问题讨论】:

    标签: ios swift uitableview uitextfield uiswitch


    【解决方案1】:

    您可以通过向开关添加监听器、检查其状态并从那里设置两个文本字段的可编辑性来做到这一点:

    // This goes into your viewDidLoad
    sw.addTarget(self, action: Selector("stateChanged:"), forControlEvents: UIControlEvents.ValueChanged)
    
    // This function does the work
    func stateChanged(switchState: UISwitch) {
        if switchState.on {
            textField1.editable = true
            textField2.editable = true
        } else {
            textField1.editable = false
            textField2.editable = false
        }
    }
    

    我假设 textField1textField2 是在您的两个表格单元格中引用 UITextFields 的网点。

    【讨论】:

    • 这是一个自定义表格视图单元格,所以它没有 viewDidLoad 方法
    • @Dereck 然后你可以把它放在你表的视图控制器的viewDidLoad 中。
    • 如果我在 tableviewcontroller 中设置目标,它会编译但状态更改不会被调用。但是,当我使用 awakeFromNib() 在自定义表格单元格类中设置目标时,它确实会被调用,但编辑不会改变。
    • 我在 customtableclass 中使用设置目标的开关创建了 custometablecell 1 和 2 类的插座。
    • @Dereck 这很奇怪,当您从 tableviewcontroller 的viewDidLoad 设置侦听器时。你的viewDidLoad 确实被调用了,对吧?在这种情况下,stateChanged 函数也应该属于视图控制器,而不是单元格。
    【解决方案2】:

    您可以执行以下操作:
    1.将选择器添加到您的开关。
    2。选择器中的变量设置为 0 如果开关打开,1 如果开关关闭。
    3.然后调用 tableview 的 reload data 方法。
    4。然后在行方法的单元格中,使用我们设置的变量检查开关是否打开,如果开关打开,则单元格文本字段可编辑为 true,否则为 false。

    【讨论】:

      猜你喜欢
      • 2013-02-16
      • 1970-01-01
      • 2010-11-22
      • 2011-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多