在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。