我正在尝试根据scrollView的x位置更改navigationBar的标题。这是我的代码。我不知道为什么它不起作用或者是否可能:
if(scrollView.contentOffset.x == 0) {
self.navigationController!.navigationBar.topItem!.title = "First"
}
else if(scrollView.contentOffset.x == self.view.frame.size.width) {
self.navigationController!.navigationBar.topItem!.title = "Second"
}
else if(scrollView.contentOffset.x == self.view.frame.size.width*2) {
self.navigationController!.navigationBar.topItem!.title = "Third"
}
关于出了什么问题的任何想法?我将它放在了scrollView所在的ViewController的viewDidLoad
中。它只将navigationBar的标题设置为“First”。是因为我放入viewDidLoad吗?我是否必须将其置于更新的新方法中?
我还尝试将以下代码放入,在scrollView结束拖动时进行更新。这不会改变任何事情:
func scrollViewDidEndDragging(scrollView: UIScrollView!, willDecelerate decelerate: Bool) {
if(self.scrollView.contentOffset.x == 0) {
self.navigationController!.navigationBar.topItem!.title = "First"
}
else if(self.scrollView.contentOffset.x == self.view.frame.size.width) {
self.navigationController!.navigationBar.topItem!.title = "Second"
}
else if(self.scrollView.contentOffset.x == self.view.frame.size.width*2) {
self.navigationController!.navigationBar.topItem!.title = "Third"
}
}
self.scrollView.contentOffset.x
在scrollViewDidEndDragging
内保持空值。有原因吗?
答案 0 :(得分:1)
将此代码放到scrollViewDidScroll:方法中,不要忘记将self设置为滚动视图的委托。
答案 1 :(得分:0)
您应该将代码放在scrollViewDidScroll()
委托方法中,如果您的计算正常,它将会起作用。祝你好运!