0

导航栏不显示在表格视图的末尾。我究竟做错了什么?

- (void)tableView:(UITableView *)tableView didEndDisplayingCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
    if([indexPath row] == [tableView numberOfRowsInSection: 0] - 1){
        [self.navigationController setNavigationBarHidden:NO
                                                 animated:YES];
        DDLogVerbose(@"Reached end of tableview");
    }

}

“Reached end of tableview”输出到 Xcode,但导航栏(以前隐藏)不会重新出现。

我也尝试过使用willDisplayCell,但是太早地显示导航栏,就在最后一个单元格出现在屏幕上之前,这并不理想。

为什么即使输入了if语句,导航栏也不会重新出现在tableview的末尾?我应该怎么做才能让它重新出现?


更新:每个人的答案都很好,尽管如果有人可以向我解释为什么上面的代码不起作用,我也会很感激。谢谢!

4

4 回答 4

1

UITableView是 a UIScrollView,所以你可以使用它的scrollViewDidScroll:委托方法来决定,基于它的contentOffsetvs. contentSize,显示或隐藏任何东西。

于 2013-07-26T09:28:52.913 回答
0

在视图中 didLoad 设置导航栏隐藏

[self.navigationController setNavigationBarHidden:YES animated:NO];

然后检查此方法是否有效

-(void) tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
    if([indexPath row] == ((NSIndexPath*)[[tableView indexPathsForVisibleRows] lastObject]).row){
        [self.navigationController setNavigationBarHidden:NO animated:YES];
    }
}
于 2013-07-26T09:23:21.090 回答
0
 - (void)scrollViewDidScroll:(UIScrollView *)scrollView
{

    float offs = (scrollView.contentOffset.y+scrollView.bounds.size.height);
    float val = (scrollView.contentSize.height);

    if (offs==val)
    {

   // Code

    }


}

愿这对你有所帮助。

于 2013-07-26T10:16:26.377 回答
0

好吧,这不是最好的解决方案,但是您可以尝试添加另一行(最后的虚拟行),然后当调用该行的 willDisplayCell 时,您应该使用导航栏,隐藏虚拟行。

于 2013-07-26T09:01:01.047 回答