Iphone 更改tableview的插入时UITableView中的节标题

Iphone 更改tableview的插入时UITableView中的节标题,iphone,objective-c,cocoa,Iphone,Objective C,Cocoa,我已经在我的tableView中实现了“拉动刷新”,比如iPhone应用程序Twitter或Facebook。 “我的tableView”具有带有头部视图的部分。当tableView处于“刷新模式”时,因此当我拉动tableView进行刷新时,我将tableView的contentInset设置为以某种方式显示tableView。此时,如果我向上推tableView,UITableView的标题将不再滚动到UITableView的顶部。请参见以下屏幕截图: 我如何修复它,使标题像预期的那样滚

我已经在我的tableView中实现了“拉动刷新”,比如iPhone应用程序Twitter或Facebook。
“我的tableView”具有带有头部视图的部分。当tableView处于“刷新模式”时,因此当我拉动tableView进行刷新时,我将tableView的contentInset设置为以某种方式显示tableView。此时,如果我向上推tableView,UITableView的标题将不再滚动到UITableView的顶部。请参见以下屏幕截图:

我如何修复它,使标题像预期的那样滚动


谢谢

执行此操作时,我通常在UITableView中使用表宽标题:

@property(nonatomic, retain) UIView *tableHeaderView

…而不是内容插图。一直到iOS 2.x版本,ContentInset都有很多bug,我不确定它们是否都被修复了。您不能使用表头有什么原因吗?

我在使用contentInset时遇到了同样的问题,并通过向scrollViewDidScroll添加代码来修复它:在“加载”状态下动态更新contentInset


尝试使用此方法添加推送视图控制器

  • 创建表视图控制器并将其添加为现有视图控制器的子视图
  • 然后将表视图和刷新控制器分配给表视图控制器的属性

    UITableViewController *newTableViewController = [[UITableViewController alloc] init];
    newTableViewControler.tableView = <yourTableView>;
    
    <yourRefreshController> = [[UIRefreshControl alloc] init];
    [<yourRefreshController> addTarget:self
                                action:@selector(refreshTableView:)
                      forControlEvents:UIControlEventValueChanged];
    
    newTableViewController.refreshControl = _chatListRefreshControl;
    [self addChildViewController:newTableViewController];
    
    UITableViewController*newTableViewController=[[UITableViewController alloc]init];
    newTableViewControler.tableView=;
    =[[UIRefreshControl alloc]init];
    [addTarget:self
    操作:@选择器(refreshTableView:)
    forControlEvents:UIControlEventValueChanged];
    newTableViewController.refreshControl=\u chatListRefreshControl;
    [self-addChildViewController:newTableViewController];
    

看起来像一个UIKit错误。找到了一个解决方法:

// your initial inset
let kInset = 40.0

func scrollViewDidScroll(_ scrollView: UIScrollView) {
    let offset = scrollView.contentOffset.y
    if (offset < 0) {
        scrollView.contentInset = UIEdgeInsets(top: kInset, left: 0.0, bottom: 0.0, right: 0.0)
    } else {
        scrollView.contentInset = .zero
    }
}
//您的初始插图
设kInset=40.0
func scrollViewDidScroll(scrollView:UIScrollView){
让offset=scrollView.contentOffset.y
如果(偏移量<0){
scrollView.contentInset=UIEdgeInSet(顶部:kInset,左侧:0.0,底部:0.0,右侧:0.0)
}否则{
scrollView.contentInset=.0
}
}

您是否有使用tableHeaderView的pull-to-refresh UITableView的实现?谢谢,迫不及待想试试!!你能告诉我什么是kPullHeight吗?太好了!谢谢,我发现它非常适合我的需要。当“拉动刷新”视图可见时,当用户抬起手指时,此技巧会使滚动失去惯性。先生,您救了我的命。kpullheight是多少
// your initial inset
let kInset = 40.0

func scrollViewDidScroll(_ scrollView: UIScrollView) {
    let offset = scrollView.contentOffset.y
    if (offset < 0) {
        scrollView.contentInset = UIEdgeInsets(top: kInset, left: 0.0, bottom: 0.0, right: 0.0)
    } else {
        scrollView.contentInset = .zero
    }
}