IOS TableView没有响应最后一行代码

时间:2017-04-21 18:21:26

标签: ios swift uitableview swift3 uiscrollview

我正在使用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
}

3 个答案:

答案 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开始