根据滚动视图中的位置更改导航栏的标题
Changing navigationBar's title based on position in 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
中。它只是将导航栏的标题设置为 "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()
委托方法中,如果你的计算没问题,它就会起作用。祝你好运!
将此代码放入 scrollViewDidScroll: 方法,并且不要忘记将 self 设置为滚动视图的委托。
我正在尝试根据滚动视图的 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
中。它只是将导航栏的标题设置为 "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()
委托方法中,如果你的计算没问题,它就会起作用。祝你好运!
将此代码放入 scrollViewDidScroll: 方法,并且不要忘记将 self 设置为滚动视图的委托。