【问题标题】:Scroll to a specific page using setContentOffset使用 setContentOffset 滚动到特定页面
【发布时间】:2017-08-20 22:56:15
【问题描述】:

我正在为 iPad pro 12.9 创建一个家谱应用程序。这是我在故事板中看到的布局。

Family Tree Layout

我创建了一个高视图控制器来保存家庭的 3 层,其中包含 3 个容器视图的滚动视图链接到更多视图控制器和滚动视图以显示有关祖父母、父母和孩子的信息。

当用户从家谱中点击一个按钮到信息时,我在以编程方式滚动到右侧部分时遇到问题。 我希望采取行动 点击人员按钮-> 转到高视图控制器-> 滚动到垂直滚动的滚动视图的右侧级别-> 在祖父母/父母/孩子滚动视图中滚动到右侧级别。

我为每个滚动视图设置了类,并为视图控制器设置了类。

在 TreeViewController.swift 我有

    @IBAction func sarah(_ sender: Any) {

    VerticalScrollView.contentOffset(CGPoint(x: 0, y: 1024), animated:false)
    performSegue(withIdentifier: "showPeople", sender: self)     
}

这是一个向下移动垂直视图控制器的按钮,然后执行 segue。

我认为这是类而不是类的实例?如何访问实例?我会以正确的方式解决这个问题吗? 谢谢。

【问题讨论】:

  • 您需要以某种方式传递其他 viewController 所需的信息,以便在您的 destinationViewController 的 viewWillAppear 函数中正确滚动

标签: ios swift xcode swift3 uiscrollview


【解决方案1】:

你需要在你的destinationViewController 上定义一个类似这样的属性

var scrollTo : CGPoint?

那么你必须在你的TreeViewControllerprepareForSegue 方法中实现类似这样的东西

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "showPeople"{
        if let fullTreeViewController = segue.destination as? FullTreeViewController{
            if(sender is btnSarah)
             {
                fullTreeViewController.scrollTo = CGPoint(x: 0, y: 1024)
             }
        }
    }
}

然后在你的destinationViewController

override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
         if(self.scrollTo != nil){
            self.verticalScrollView.contentOffset(self.scrollTo, animated:false)
         }

    }

希望对你有帮助

【讨论】:

  • 嗨,这对我没有用,我在 TreeViewController 和目标控制器中收到错误“实例成员 contentoffset 不能用于类型 verticalscrillview”:“vertviewcontroller 类型的值没有成员verticalscrollview'
  • 你能发布你的班级结构吗?我只发布一个例子,但如果你发布你的班级结构我可以帮助你
  • 我已经为每个视图控制器和滚动视图 imgur.com/a/Ks8Nb 设置了单独的类,但它们都只是继承了滚动视图或视图控制器的基类。例如VerticalScrollView.swift 是'导入 UIKit 类 VerticalScrollView: UIScrollView { }'
猜你喜欢
  • 1970-01-01
  • 2015-12-19
  • 1970-01-01
  • 1970-01-01
  • 2015-10-11
  • 2013-09-05
  • 1970-01-01
  • 2013-01-02
  • 1970-01-01
相关资源
最近更新 更多