找出最后添加的UITableViewCell

时间:2015-01-13 17:31:37

标签: ios uitableview swift xcode6

我想在UITableView的最后位置找到最后一个UITableViewCell,并将此单元格的detailTextLabel更改为“Last added”。有人知道如何在Swift中这样做吗?

2 个答案:

答案 0 :(得分:0)

由于表视图始终需要数据源,因此您应该查看那里而不是表视图。

NSIndexPath *lastCellIDP = [NSIndexPath indexPathForRow:self.dataSource.lastObject inSection:0];
UITableViewCell *lastCell = [self.tableView cellForRowAtIndexPath:lastCellIDP];
lastCell.detailTextLabel.text = @"U NEED 2 ChAnGE!";

该代码假定您的数据源类型为NSArray

也就是说,当你绑定数据时,我会将这个逻辑放在UITableViewCell子类中,如果它是最后一项,我可能会把你的数据源的属性放在这个属性中。

答案 1 :(得分:0)

tableView为您提供了创建最后一行的indexPath所需的一切,并获取它的单元格。

let lastSectionIndex = tableView.numberOfSections()-1
let lastSectionLastRow = tableView.numberOfRowsInSection(lastSectionIndex) - 1
let indexPath = NSIndexPath(forRow:lastSectionLastRow, inSection: lastSectionIndex)
let cell = tableView.cellForRowAtIndexPath(indexPath)

但根据您的需要,您可能更好地访问tableView的委托中的单元格

func tableView(_ tableView: UITableView,  
    willDisplayCell cell: UITableViewCell,
    forRowAtIndexPath indexPath: NSIndexPath)

这样的东西
let lastSectionIndex = tableView.numberOfSections()-1
let lastSectionLastRow = tableView.numberOfRowsInSection(lastSectionIndex) - 1
let lastIndexPath = NSIndexPath(forRow:lastSectionLastRow, inSection: lastSectionIndex)

let cellIndexPath = tableView.indexPathForCell(cell)

if cellIndexPath == lastIndexPath {
    // the last cell is about to be displayed. change get here.
}