Ios 在导航栏上使用Back后,刷新TableView的第一个单元格
我在NavigationController中嵌入了一个TableView(它嵌入在TabBar控制器中)。我在每个单元格中都有一个用户名按钮,用于连接用户的个人资料 然而,当我在个人资料页面的导航栏上点击“后退”并被引导回tableview后,似乎我发现了什么 如果我再次下拉,它会刷新,但这一次,当其他行按预期工作时,最上面一行的用户名变得不可访问 请注意,我在tableView中调用了Ios 在导航栏上使用Back后,刷新TableView的第一个单元格,ios,swift,uitableview,pull-to-refresh,Ios,Swift,Uitableview,Pull To Refresh,我在NavigationController中嵌入了一个TableView(它嵌入在TabBar控制器中)。我在每个单元格中都有一个用户名按钮,用于连接用户的个人资料 然而,当我在个人资料页面的导航栏上点击“后退”并被引导回tableview后,似乎我发现了什么 如果我再次下拉,它会刷新,但这一次,当其他行按预期工作时,最上面一行的用户名变得不可访问 请注意,我在tableView中调用了self.theRefreshControl=UIRefreshControl(),但我不确定在使用“
self.theRefreshControl=UIRefreshControl()
,但我不确定在使用“后退”按钮后是否调用了它
请注意,我使用prepareforsgue
执行segue
总结
- 如果我转到通知页面并尝试单击用户名,则用户名按钮单击并继续工作
- 如果我转到通知,并拉刷新,第一行的用户名按钮不起作用
- 如果我转到通知,不做任何刷新,用户名按钮会自动切换并返回(因此不会出现bug)
- 如果我转到通知并拉刷新,刷新控制图标会出现并消失,但现在,它不允许我单击顶行的用户名按钮
- 如果我对通知进行刷新,它不允许我单击顶行中的用户名。如果我单击第二个单元格中的第二个用户名,它将转到用户的配置文件,但当我单击“上一步”按钮时,它会出现如下错误:
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问题,很高兴!:)