在Swift中刷新基于Int的UITableView的某一行

我是Swift的开始开发人员,我正在创build一个包含UITableView的基本应用程序。 我想刷新表中的某一行使用:

self.tableView.reloadRowsAtIndexPaths(paths, withRowAnimation: UITableViewRowAnimation.none) 

我想要刷新的行是来自一个Int命名的rowNumber

问题是,我不知道该怎么做,我search的所有线程都是Obj-C

有任何想法吗?

您可以使用行和节号创build一个NSIndexPath ,然后重新加载它,如下所示:

 let indexPath = NSIndexPath(forRow: rowNumber, inSection: 0) tableView.reloadRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Top) 

在这个例子中,我假设你的表只有一个部分(即0),但你可以相应地改变这个值。

更新Swift 3.0:

 let indexPath = IndexPath(item: rowNumber, section: 0) tableView.reloadRows(at: [indexPath], with: .top) 

对于软性碰撞animation解决scheme:

Swift 3:

 let indexPath = IndexPath(item: row, section: 0) tableView.reloadRows(at: [indexPath], with: .fade) 

Swift 2.x:

 let indexPath = NSIndexPath(forRow: row, inSection: 0) tableView.reloadRowsAtIndexPaths([indexPath], withRowAnimation: .Fade) 

这是另一种防止应用程序崩溃的方法:

Swift 3:

 let indexPath = IndexPath(item: row, section: 0) if let visibleIndexPaths = tableView.indexPathsForVisibleRows?.index(of: indexPath as IndexPath) { if visibleIndexPaths != NSNotFound { tableView.reloadRows(at: [indexPath], with: .fade) } } 

Swift 2.x:

 let indexPath = NSIndexPath(forRow: row, inSection: 0) if let visibleIndexPaths = tableView.indexPathsForVisibleRows?.indexOf(indexPath) { if visibleIndexPaths != NSNotFound { tableView.reloadRowsAtIndexPaths([indexPath], withRowAnimation: .Fade) } } 

怎么样:

 self.tableView.reloadRowsAtIndexPaths([NSIndexPath(rowNumber)], withRowAnimation: UITableViewRowAnimation.Top) 

在Swift 3.0中

 let rowNumber: Int = 2 let sectionNumber: Int = 0 let indexPath = IndexPath(item: rowNumber, section: sectionNumber) self.tableView.reloadRows(at: [indexPath], with: .automatic) 

默认情况下,如果在TableView中只有一个部分,则可以将部分值设置为0。