ios - 使用 setContentOffset 滚动到特定页面

标签 ios swift xcode swift3 uiscrollview

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

Family Tree Layout

我创建了一个高大的 View Controller 来容纳家庭的 3 层,带有 3 个容器 View 的 ScrollView 链接到更多 View Controller 和 ScrollView 以显示有关祖 parent 、 parent 和 child 的信息。

当用户点击家谱中的按钮转到信息时,我无法以编程方式滚动到右侧部分。 我想要行动去 点击人物按钮 -> 转到高 View Controller -> 滚动到垂直滚动的 ScrollView 的右侧级别 -> 在祖 parent / parent / child ScrollView 中滚动到右侧级别。

我为每个 ScrollView 和 View Controller 设置了类。

在 TreeViewController.swift 我有

    @IBAction func sarah(_ sender: Any) {

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

这是一个向下移动垂直 View Controller 的按钮,然后执行转场。

我认为这是类而不是类的实例?如何访问实例?我这样做是对的吗? 谢谢。

最佳答案

你需要在你的 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)
         }

    }

希望对你有帮助

关于ios - 使用 setContentOffset 滚动到特定页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43059876/

相关文章:

javascript - 如何提高NavigatorIOS转换速度?

ios - 快速访问应用程序委托(delegate)变量延迟 View 加载

ios - 将 ios 应用程序上传到 itunesconnect 时出错 "failed to open ssh session (16)"

iphone - 我在配置 XCODE 4.3.1 的代码签名部分中没有看到任何配置文件

ios - 多个应用程序在后台运行时的内存警告

ios - Firebase - 将所有子键和子值检索到 Swift 中的单独数组中

在 super.init 之前在表达式中使用初始化属性的 Swift 错误

swift - CIImage 转换为 UIImage

ios - 将 UITextField 添加到代码作为 socket 时发出 Sigabrt 信号

objective-c - 单击 UIWebView 上的链接时打开新的 UIViewController