我正在使用swift 3并拥有一个TableView,我试图在用户位于最后一行时触发一段特定的代码。由于某种原因,它完全忽略了这一点而没有开火。我甚至在那里放了一个断点而且它没有击中它。这就是我所拥有的
func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
if indexPath.row == self.Locations.count {
print("Last Row")
}
}
print语句没有显示断点。我的TableView代码就是这个
class HomePageC: UIViewController,UITableViewDataSource {
@IBOutlet weak var TableSource: UITableView!
var Locations = [String]()
override func viewDidLoad() {
super.viewDidLoad()
TableSource.allowsSelection = false
TableSource.dataSource = self
TableSource.estimatedRowHeight = 504
TableSource.showsVerticalScrollIndicator = false
TableSource.rowHeight = UITableViewAutomaticDimension
TableSource.tableFooterView = UIView()
}
func tableView(_ tableView:UITableView, numberOfRowsInSection section:Int) -> Int {
// This always returns 10 items
return Locations.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) ->
UITableViewCell {
// This just populates the fields as I have a custom TableView
}
答案 0 :(得分:2)
您是否确认是否正在调用color_matrices
?我怀疑是不是。 color_matrices
是一种willDisplay()
方法。在您设置它的委托属性之前,您的表视图将无法调用它,但我不知道这是在做什么。
委托可以在func tableView(UITableView, willDisplay: UITableViewCell, forRowAt: IndexPath)
中设置,就像您对UITableViewDelegate
属性所做的那样:
viewDidLoad()
您还需要声明dataSource
采用TableSource.delegate = self
协议。这可以在类声明中完成:
HomePageC
答案 1 :(得分:1)
您需要检查self.Locations.count - 1
的相等性。由于索引从0开始,因此最后一项indexPath.row
将为9,而Locations.count为10。
if indexPath.row == self.Locations.count - 1 {
print("Last Row")
}
答案 2 :(得分:1)
尝试使用
if indexPath.row == (self.Locations.count - 1) {
print("Last Row")
}
因为count返回数组中的项数,其中索引路径返回迭代,从0开始