如何在Swift3中的UITableViewCell中保存数组数据

时间:2016-11-16 16:35:05

标签: ios arrays tableview swift3

我希望UITableView中的单元格包含String数组。为了做到这一点,我在我的myArray文件中设置了三个名为passedArrayDatatwodArraySecondTableVewController的Type数组变量。 passedArrayData用于显示单元格。他们有string数组。在我的firstTableViewController中,我创建了;

 override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

    let cell = tableView.dequeueReusableCell(withIdentifier: cellIdentifier, for: indexPath) as UITableViewCell

    let viewcontroller = SecondViewController()
    let getData = UserDefaults.standard.array(key: "twoDarray") as! [[String]]
    viewcontroller.myArray = getData[indexPath.row]
    self.navigationController?.pushViewController(viewcontroller, animated: true)
}

 override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: cellIdentifier, for: indexPath) as UITableViewCell

    cell.textLabel?.text = title[indexPath.row]
    cell.textLabel?.font = UIFont(name: familyFont, size: 19)
    cell.textLabel?.font = UIFont.systemFont(ofSize: 19)

    return cell
}

这是 SecondViewController 代码;

  override func viewDidLoad() {
    super.viewDidLoad()

    self.title = _titile
    data()

    tableView.register(UITableViewCell.self, forCellReuseIdentifier: cellIdentifier)

}

  func data(){
    if let items = UserDefaults.standard.array(forKey: "twodArray") as? [[String]] {
        for item in 0...items.count {
            index = item
            let string = items[index]
            passedArrayData = string
            twodArray.append(passedArrayData)
        }
    }
}

 func setTitleName(){
    let alert = UIAlertController(title: ".....", message: "...", preferredStyle: .alert)
    let save = UIAlertAction(title: "Save", style: .default, handler: {
        (UIAlertAction) -> Void in

        let textInput = alert.textFields![0] as UITextField

        self.myArray.append(textInput.text!)
        self.twodArray.append(self.myArray)

        let saveData = UserDefaults.standard
        saveData.set(self.twodArray, forKey: "twodArray")
        saveData.synchronize()

        DispatchQueue.main.async {
            () -> Void in
            self.tableView.reloadData()
        }
    })

    let cancel = UIAlertAction(title: "Cancel", style: .cancel, handler: nil)

    alert.addTextField(configurationHandler: {
        (textField : UITextField!) -> Void in

        textField.placeholder = "...."
    })

    alert.addAction(save)
    alert.addAction(cancel)
    self.present(alert, animated: true, completion: nil)
}

 override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: cellIdentifier, for: indexPath) as UITableViewCell

cell.textLabel?.text = myArray[indexPath.row]
cell.textLabel?.font = UIFont(name: familyFont, size: 19)
cell.textLabel?.font = UIFont.systemFont(ofSize: 19)

return cell

}

我不知道如何让每个选定的单元格存储String数组。例如,当您单击一个单元格并转到SecondTableViewController,您可以在UITextField处存储文本,并且让我们通过在{{1}中输入字符串五次来制作五个单元格}}。当你回到UITextField控制器并点击另一个单元格时,除了存储一些文本之外什么都没有。

我想要完成的是;

  1. 使用FirtsTableView为我的代码正确保存数据。
  2. 让每个单元格都有一个显示在secondTableViewController上的字符串数组
  3. 我无法解决许多错误。如果您知道我的意思并希望实现,那么制作适用于此的代码非常有用。

    你的帮助对我来说太大了。 感谢

0 个答案:

没有答案