Ios 在导航栏上使用Back后,刷新TableView的第一个单元格

Ios 在导航栏上使用Back后,刷新TableView的第一个单元格,ios,swift,uitableview,pull-to-refresh,Ios,Swift,Uitableview,Pull To Refresh,我在NavigationController中嵌入了一个TableView(它嵌入在TabBar控制器中)。我在每个单元格中都有一个用户名按钮,用于连接用户的个人资料 然而,当我在个人资料页面的导航栏上点击“后退”并被引导回tableview后,似乎我发现了什么 如果我再次下拉,它会刷新,但这一次,当其他行按预期工作时,最上面一行的用户名变得不可访问 请注意,我在tableView中调用了self.theRefreshControl=UIRefreshControl(),但我不确定在使用“

我在NavigationController中嵌入了一个TableView(它嵌入在TabBar控制器中)。我在每个单元格中都有一个用户名按钮,用于连接用户的个人资料

然而,当我在个人资料页面的导航栏上点击“后退”并被引导回tableview后,似乎我发现了什么

如果我再次下拉,它会刷新,但这一次,当其他行按预期工作时,最上面一行的用户名变得不可访问

请注意,我在tableView中调用了
self.theRefreshControl=UIRefreshControl()
,但我不确定在使用“后退”按钮后是否调用了它

请注意,我使用
prepareforsgue
执行segue


总结

  • 如果我转到通知页面并尝试单击用户名,则用户名按钮单击并继续工作

  • 如果我转到通知,并拉刷新,第一行的用户名按钮不起作用

  • 如果我转到通知,不做任何刷新,用户名按钮会自动切换并返回(因此不会出现bug)

  • 如果我转到通知并拉刷新,刷新控制图标会出现并消失,但现在,它不允许我单击顶行的用户名按钮

  • 如果我对通知进行刷新,它不允许我单击顶行中的用户名。如果我单击第二个单元格中的第二个用户名,它将转到用户的配置文件,但当我单击“上一步”按钮时,它会出现如下错误:

ViewDidLoad()中的代码:

 override func viewDidLoad() {
  super.viewDidLoad()

  self.theRefreshControl = UIRefreshControl()
  self.theRefreshControl.attributedTitle = NSAttributedString(string: "Pull to refresh")
  self.theRefreshControl.addTarget(self, action: "refresh:", forControlEvents: UIControlEvents.ValueChanged)
  self.tableView.addSubview(theRefreshControl)
}

func refresh(sender: AnyObject) {
   if isFirstLoad == false {
      currentPage = 1
       getStuff()
    }

   self.theRefreshControl.endRefreshing()
}

我还尝试在
self.tableView.backgroundView=refreshControl
的上方和下方添加
self.tableView.addSubview(theRefreshControl)
;并且还尝试将
self.tableView.addSubview(theRefreshControl)
替换为
self.tableView.backgroundView=refreshControl
,但不幸的是,您实例化refreshControl的方式是这样的:

override func viewDidLoad() {
    let refreshControl = UIRefreshControl()
    refreshControl.addTarget(self, action: "refresh:", forControlEvents: .ValueChanged)
    tableView.backgroundView = refreshControl // <- THIS!!!
}
override func viewDidLoad(){
让refreshControl=UIRefreshControl()
refreshControl.addTarget(自身,操作:“refresh:”,forControlEvents:.ValueChanged)

tableView.backgroundView=refreshControl//segue之前可以正常工作?是的,username按钮在segue之前可以正常工作。我刚刚意识到,如果我转到该页面,不拉刷新,它就可以正常工作。但是,只要我拉下来(所以触发刷新),然后它无法在单击用户名按钮时再次执行此操作。@Maheshreddy我使用了完全相同的操作。我还使刷新控件在另一个页面上工作,该页面正在工作。我正在尝试执行相同的操作,但工作不正常。我猜您的刷新控件位于单元格前面,因此最后尝试此:
tableView.sendSubviewToBack(theRefreshControl)
中的
viewDidLoad
我的外观与此非常相似,只是行
tableView.backgroundView=refreshControl
(请检查我的更新答案,我刚刚在viewDidLoad中添加了我的代码)。我尝试在
self.tableView.addSubview(theRefreshControl)
之前和之后添加
tableView.backgroundView=refreshControl
,但不幸的是,没有运气您必须删除
self.tableView.addSubview:
。另外,您是否调用
endRefresh:
?是的,我正在调用。
self.theRefreshControl.endRefresh()
。我正在问题中添加我的代码。请稍等。非常感谢您的时间!!此
sendSubviewToBack
解决了我的问题。因此我使用了
tableView.addSubview(theRefreshControl)
tableView.sendSubviewToBack(theRefreshControl)
。我没有使用
tableView.backgroundView=refreshControl
@Quan~,再次感谢你,伙计。我会在23小时内接受悬赏..XoXoNo问题,很高兴!:)