IOS:从不同视图的 class 更改视图的正确方法是什么?

IOS: What is the correct way to change a view from the class of a different view?

我设置了 UIImageView 子类(在 swift 中),因此我可以访问 touchesBegan/touchesMoved/touchesEnded。

调用这些方法之一时,我需要更改 属性 不同的加载视图。

在我看来,我现在需要访问活动视图控制器才能设置其他视图的属性。有没有更好的方法来解决这个问题(比如在视图控制器中调用事件方法)?

请注意,我是 iOS 的新手,我对事件系统还不是很熟悉,因为我发现的大多数信息都是用 Objective C 而不是 Swift. (别担心,我正在查看 Apple 的文档。)

此外,不,我无法将 UIImageView 更改为 UIButton。即使我更改为 UIButton,我也需要访问个别 touchesBegan 等方法,同样的问题仍然存在。

如果我的理解正确,您需要将 UIViewControllerUIImageVIew 引用到 push/present 一个新的 UIViewController。您有几个选择:

  1. 从图像视图触发一个 NSNotification 并在视图控制器上有一个事件侦听器。

  2. 在图像视图上创建一个委托,在视图控制器上触发一个选择器。

  3. 在图像视图上保留对视图控制器的引用,并使用该引用从图像视图中推送一个新的视图控制器。

  4. 在应用程序 window 的 rootViewController.

  5. 上模态呈现一个新的视图控制器