Determine if a tableview cell is visible

前端 未结 8 1311
野性不改
野性不改 2020-12-02 13:13

Is there any way to know if a tableview cell is currently visible? I have a tableview whose first cell(0) is a uisearchbar. If a search is not active, then hide cell 0 via a

8条回答
  •  执念已碎
    2020-12-02 13:24

    Another solution (which can also be used to check if a row is fully visible) would be to check if the frame for the row is inside the visible rect of the tableview.

    In the following code, ip represents the NSIndexPath:

    CGRect cellFrame = [tableView rectForRowAtIndexPath:ip];
    if (cellFrame.origin.ytableView.contentOffset.y+tableView.frame.size.height-tableView.contentInset.top-tableView.contentInset.bottom){ // the row is below visible rect
      [tableView scrollToRowAtIndexPath:ip atScrollPosition:UITableViewScrollPositionBottom animated:NO];
    }
    

    Also using cellForRowAtIndexPath: should work, since it returns a nil object if the row is not visible:

    if([tableView cellForRowAtIndexPath:ip]==nil){
      // row is not visible
    }
    

提交回复
热议问题