繁体   English   中英

是否有必要将scrollview.delegate设置为self?

[英]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 ,则此滚动视图仍可在模拟器上运行。

我的问题:

  1. 是否有必要将scrollview.delegate设置为self? 为什么或者为什么不?
  2. 自我指的是什么? 命令+左键单击“确定设置”。
  1. 您不必为scrollView设置委托。 如果要对scrollView调用的委托方法做出反应,则只能执行此scrollView 例如,如果要在用户执行滚动时执行某些操作,则需要设置委托并实现func scrollViewDidScroll(scrollView: UIScrollView)方法。 每次用户滚动时,您都可以对此方法的主体做出反应。

  2. 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM