根据scrollView中的位置更改navigationBar的标题

时间:2015-04-17 04:12:07

标签: ios swift uiscrollview

我正在尝试根据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.xscrollViewDidEndDragging内保持空值。有原因吗?

2 个答案:

答案 0 :(得分:1)

将此代码放到scrollViewDidScroll:方法中,不要忘记将self设置为滚动视图的委托。

答案 1 :(得分:0)

您应该将代码放在scrollViewDidScroll()委托方法中,如果您的计算正常,它将会起作用。祝你好运!