ios - 根据 ScrollView 中的位置更改导航栏的标题

标签 ios swift uiscrollview

我正在尝试根据 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.xscrollViewDidEndDragging 中保持记录 null。有什么原因吗?

最佳答案

将此代码放入scrollViewDidScroll:方法并且不要忘记将 self 设置为 ScrollView 的委托(delegate)。

关于ios - 根据 ScrollView 中的位置更改导航栏的标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29690135/

相关文章:

ios - 同步身份验证 SwiftUI

ios - NSLineBreakByWordWrapping中断哪些字符?

ios - Swift WatchConnectivity 应用程序上下文作为字典

swift - 无法将 Swift 隐式解包可选声明为常量

ios - 如何让导航栏像iOS中的safari一样随着webview滚动?

android - 具有数据收集功能的 Titanium ListViews

ios - Swift Tableview 从 Firebase 数据库加载数据

swift - 如何在 UIScrollView 移动时正确转换 UIView 的比例

iphone - UIScrollView 周围的 Safari 风格渐变阴影

iphone - cocos2d v2 缩放我的背景