包含具有滚动功能的文本字段

时间:2015-08-31 14:39:27

标签: ios iphone swift xcode6

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

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

带有包含文本字段的自定义UITableCells的UITableView可能正是您所需要的。

答案 2 :(得分:0)

您可以使用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
  }