[英]Is it necessary to set scrollview.delegate as self?
我正在参加斯坦福大学提供的在线iOS课程。 在示例代码中,
@IBOutlet weak var scrollView: UIScrollView! {
didSet {
scrollView.contentSize = imageView.frame.size
// all three of the next lines of code
// are necessary to make zooming work
scrollView.delegate = self
scrollView.minimumZoomScale = 0.03
scrollView.maximumZoomScale = 1.0
}
}
但是,如果我删除scrollView.delegate = self
,则此滚动视图仍可在模拟器上运行。
我的问题:
您不必为scrollView
设置委托。 如果要对scrollView
调用的委托方法做出反应,则只能执行此scrollView
。 例如,如果要在用户执行滚动时执行某些操作,则需要设置委托并实现func scrollViewDidScroll(scrollView: UIScrollView)
方法。 每次用户滚动时,您都可以对此方法的主体做出反应。
Self
指的是保存此变量的类。 在这种情况下,它可能是你的UIViewController
定义,它仍然有效吗? 我的意思是,如果你可以用触摸移动它,是的它会起作用。
的原因
scrollView.delegate = self
是它允许你添加可以在滚动开始,滚动结束等时执行的代码。这样你就有了自定义点来改变scrollview的行为或动作。 没有那么小的代码,委托代码永远不会被调用。
说得通?
自我指的是什么?
self
是执行引用self
的代码的对象。 代码段中定义的scrollview
实例变量是某个类的一部分; 在这种情况下,它肯定是一个视图控制器。 一个对象和一个类之间的区别就像桃子馅饼和桃子馅饼配方之间的区别:配方是一个告诉你所有关于桃馅饼的规格,但你不能吃配方,而实际的桃子馅饼是一个独特的东西,你可以从一个食谱制作几个相似的馅饼。 无论如何, self
是执行与scrollview
变量关联的didSet
方法的特定对象的名称。
是否有必要将scrollview.delegate设置为self? 为什么或者为什么不?
UIScrollView
对象具有delegate
属性,您可以将其设置为知道如何成为滚动视图委托的任何对象,即实现UIScrollViewDelegate
协议的任何对象。 但由于视图几乎总是由某种视图控制器管理,因此管理滚动视图的视图控制器也可以作为其委托来实现。 滚动视图可以正常工作,完全没有代理; 设置委托只有在你想要做一些事情以响应滚动视图中的变化或者以某种方式修改其行为时才是重要的。 因此,如果滚动视图有一个委托,它通常是管理该滚动视图的视图控制器,并且因为它可能也是视图控制器,它首先设置滚动视图self
(意味着视图控制器)就是你的'大部分时间都会看到。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.