【问题标题】:Contain textfields with scroll function包含带有滚动功能的文本字段
【发布时间】:2015-08-31 14:39:26
【问题描述】:

使用滚动功能包含大约 50 个文本字段的最佳方式是什么?我只为 Iphone 设备制作了一个应用程序,我将在视图的最低三分之一中包含文本字段。我应该使用滚动视图吗?还是有更好的功能。谢谢

【问题讨论】:

    标签: ios iphone swift xcode6


    【解决方案1】:

    使用 UITableView,使用 UIScrollview 可能会出现内存问题。

    【讨论】:

      【解决方案2】:

      您可以为此使用UITableview,但是如果您的表格中的行数超过了屏幕上可以容纳的行数,那么这种方法就会出现问题。在这种情况下,滚动到屏幕外的单元格将被重新使用,textField 的内容将丢失。

      解决方案:

      text fields 设置委托,然后在输入名称时使用delegate 方法获取名称。

      首先,将变量添加到视图控制器,以保存当前正在编辑的文本字段的数组和行号。

      var arrayOfNames : [String] = [String]()
      var rowBeingEdited : Int? = nil
      

      然后,在你的 cellForRowAtIndexPath 方法中,添加:

      cell.nameInput.text = "" // just in case cells are re-used, this clears the old value
      cell.nameInput.tag = indexPath.row
      cell.nameInput.delegate = self
      

      然后添加两个新函数,以捕获文本字段开始/结束编辑的时间:

      func textFieldDidEndEditing(textField: UITextField) {
      let row = textField.tag
      if row >= arrayOfNames.count {
          for var addRow = arrayOfNames.count; addRow <= row; addRow++ {
              arrayOfNames.append("") // this adds blank rows in case the user skips rows
            }
        }
          arrayOfNames[row] = textField.text
          rowBeingEdited = nil
       }
      
          func textFieldDidBeginEditing(textField: UITextField) {
          rowBeingEdited = textField.tag
        }
      

      【讨论】:

        【解决方案3】:

        带有包含文本字段的自定义 UITableCells 的 UITableView 可能是您正在寻找的。​​p>

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-05-25
          • 1970-01-01
          • 2011-12-22
          • 2014-10-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-12-24
          相关资源
          最近更新 更多