如何在用户交互期间加载类?

时间:2017-01-11 20:33:36

标签: arrays swift class

这里非常新鲜。我正在尝试制作一个简单的待办事项。

当用户键入任务时,我想尝试将此任务添加到字符串数组并增加计数器。

当我输入多个任务时,我的字符串数组只保存先前输入的任务,而我的计数器总是1(计数器基于字符串数组中的项目数)。

我假设每次输入新任务时,处理我的字符串数组和计数器的类都会重置为初始值,这是一个空字符串数组,分别为0。

任何想法如何避免这种情况,或者在用户交互方面如何加载类?

对不起,如果我不太清楚,谢谢。

class TextInputTableViewCell: UITableViewCell, UITextFieldDelegate {
...
var lastItem = 0
var tableViewData: Array<String> = []

...

func textFieldShouldReturn(_ textField: UITextField) -> Bool {

    tableViewData.append(textField.text!)
    lastItem = tableViewData.count
    textField.resignFirstResponder()
    return true

}

ViewController主类:

class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, UITextFieldDelegate {
...

1 个答案:

答案 0 :(得分:1)

问题是tableViewDataTextInputTableViewCell的属性。这意味着每次重新加载tableview时,都会丢失存储在此变量中的内容。您可以通过UITableViewController UITextFieldDelegate来解决此问题,并将文本存储在UITableViewController的属性中。您可以在加载TextInputTableViewCell时执行此操作。例如:

class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, UITextFieldDelegate {

    var lastItem = 0
    var tableViewData: Array<String> = []

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

        // Load your cell    
        let cell: TextInputTableViewCell = ... 

        // Set the text field delegate
        cell.textField.delegate = self
        return cell
    }

    func textFieldShouldReturn(_ textField: UITextField) -> Bool {

        tableViewData.append(textField.text!)
        lastItem = tableViewData.count
        textField.resignFirstResponder()
        return true
    }
}

所以你的TextInputTableViewCell应该是这样的:

class TextInputTableViewCell: UITableViewCell {

    @IBOutlet weak var textField: UITextField!

}