如何在Swift中插入新的单元格到UITableView中
我正在做一个项目,我有两个UITableView
和两个UITextField
,当用户按下button时,第一个textField
的数据应该进入tableView
,第二个进入第二个tableView
。 我的问题是,我不知道如何把数据放在tableView
每次用户按下button,我知道如何插入数据tableView:cellForRowAtIndexPath:
但是,据我所知,一次工作。 那么每次用户点击button时,我可以使用什么方法来更新tableView
呢?
点击button时,使用beginUpdates
和endUpdates
插入新的单元格。
首先在你的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()