【发布时间】:2019-12-29 19:34:49
【问题描述】:
我按照本教程创建了一个类似 Snapchat 的菜单:https://www.youtube.com/watch?v=1_daE3IL_1s
简而言之,这个想法是使用 XIB 创建自定义视图,并将它们添加到滚动视图中。
我想在其中一个自定义视图中添加一个“后退”按钮,以便在点击该按钮时滚动视图会自动滚动回其初始视图。我的想法是在自定义视图的 IBAction 函数中编写代码来调用 UIScrollview 的内容偏移委托函数。
以下是视图控制器中的代码:
class ViewController: UIViewController, UIScrollViewDelegate {
//I'm naming the Scroll View as "scrollView"
@IBOutlet weak var scrollView: UIScrollView! {
didSet{
scrollView.delegate = self
}
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
var v1 : View1 = View1(nibName: "View1", bundle: nil)
var v2 : View2 = View2(nibName: "View2", bundle: nil)
self.addChild(v1)
self.scrollView.addSubview(v1.view)
v1.didMove(toParent: self)
self.addChild(v2)
self.scrollView.addSubview(v2.view)
v1.didMove(toParent: self)
var v2Frame : CGRect = v2.view.frame
v2Frame.origin.x = self.view.frame.width
v2.view.frame = v2Frame
self.scrollView.contentSize = CGSize(width: self.view.frame.width * 2, height: self.view.frame.height)
// self.scrollView.contentSize = CGSize(self.view.frame.width * 2, self.view.frame.size.height)
}
}
View2 中的代码如下:
class View2: UIViewController {
@IBOutlet weak var buttonHome: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func buttonHomeAction(_ sender: Any) {
//how to access scrollview.setContentOffset from ViewController to scroll the view back to the first view?
}
所以我的问题是如何从 ViewController 访问 scrollview.setContentOffset 以将视图滚动回第一个视图?我在正确的轨道上吗?或者有没有其他方法可以让我点击一个按钮并将视图滚动回其第一页?
谢谢!
【问题讨论】:
标签: swift xcode uiscrollview xib ibaction