如何在Swift中插入新的单元格到UITableView中

我正在做一个项目,我有两个UITableView和两个UITextField ,当用户按下button时,第一个textField的数据应该进入tableView ,第二个进入第二个tableView 。 我的问题是,我不知道如何把数据放在tableView每次用户按下button,我知道如何插入数据tableView:cellForRowAtIndexPath:但是,据我所知,一次工作。 那么每次用户点击button时,我可以使用什么方法来更新tableView呢?

点击button时,使用beginUpdatesendUpdates插入新的单元格。

首先在你的tableview数组中追加数据

  Yourarray.append([labeltext]) 

然后提升你的桌子并插入新的一排

  // Update Table Data tblname.beginUpdates() tblname.insertRowsAtIndexPaths([ NSIndexPath(forRow: Yourarray.count-1, inSection: 0) ], withRowAnimation: .Automatic) tblname.endUpdates() 

这插入单元格,并不需要重新加载整个表,但如果你有这个问题,你也可以使用tableview.reloadData()


迅速3.0

  tableView.beginUpdates() tableView.insertRows(at: [IndexPath(row: yourArray.count-1, section: 0)], with: .automatic) tableView.endUpdates() 

Objective-C的

 [self.tblname beginUpdates]; NSArray *arr = [NSArray arrayWithObject:[NSIndexPath indexPathForRow:Yourarray.count-1 inSection:0]]; [self.tblname insertRowsAtIndexPaths:arr withRowAnimation:UITableViewRowAnimationAutomatic]; [self.tblname endUpdates]; 

这里是你的代码添加到两个tableView的数据:

 import UIKit class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource { @IBOutlet weak var table1Text: UITextField! @IBOutlet weak var table2Text: UITextField! @IBOutlet weak var table1: UITableView! @IBOutlet weak var table2: UITableView! var table1Data = ["a"] var table2Data = ["1"] override func viewDidLoad() { super.viewDidLoad() } @IBAction func addData(sender: AnyObject) { //add your data into tables array from textField table1Data.append(table1Text.text) table2Data.append(table2Text.text) dispatch_async(dispatch_get_main_queue(), { () -> Void in //reload your tableView self.table1.reloadData() self.table2.reloadData() }) table1Text.resignFirstResponder() table2Text.resignFirstResponder() } //delegate methods func numberOfSectionsInTableView(tableView: UITableView) -> Int { return 1 } func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { if tableView == table1 { return table1Data.count }else if tableView == table2 { return table2Data.count } return Int() } func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { if tableView == table1 { let cell = table1.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! UITableViewCell let row = indexPath.row cell.textLabel?.text = table1Data[row] return cell }else if tableView == table2 { let cell = table2.dequeueReusableCellWithIdentifier("Cell1", forIndexPath: indexPath) as! UITableViewCell let row = indexPath.row cell.textLabel?.text = table2Data[row] return cell } return UITableViewCell() } } 

而你的结果将是:

在这里输入图像说明

Swift 3.0更新的解决scheme

在底部插入

 self.yourArray.append(msg) self.tblView.beginUpdates() self.tblView.insertRows(at: [IndexPath.init(row: self.yourArray.count-1, section: 0)], with: .automatic) self.tblView.endUpdates() 

插入到TableView顶部

 self.yourArray.insert(msg, at: 0) self.tblView.beginUpdates() self.tblView.insertRows(at: [IndexPath.init(row: 0, section: 0)], with: .automatic) self.tblView.endUpdates()