我正在尝试根据 ScrollView 的 x 位置更改导航栏的标题。这是我的代码。我不知道为什么它不起作用或者是否可能:
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
中保持记录 null。有什么原因吗?
最佳答案
将此代码放入scrollViewDidScroll:方法并且不要忘记将 self 设置为 ScrollView 的委托(delegate)。
关于ios - 根据 ScrollView 中的位置更改导航栏的标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29690135/