- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有两个 viewControllers(AviewController 和 BviewController)在没有使用 segue 的情况下连接。在 AviewController 中,我有一个 UIScrollview。
我想做的是从 BviewController 调用一个函数,该函数将禁用 AviewController 中的 scrollView (AviewController.scrollView.scrollEnabled = false)
如果不使用 segue 我怎么能做到这一点?
View Controller :
var AV = AviewController ()
func disable_AscrollView (){
AviewController.scrollView.scrollEnabled = false
}
最佳答案
那么,您描述的代码不起作用,因为 AV
与屏幕上显示的实例不是 AviewController
的实例。
获取正确实例的方法有多种,视情况而定。
如果您确定整个应用中只有一个(这似乎不适用于 Swift,请参阅评论。)AviewController
,您可以声明一个static var sharedInstance: AviewController
,并设置在 viewDidLoad
函数中将此变量赋给 self
。现在,在您的应用程序的任何地方,您都可以将其称为 AviewController.sharedInstance
并调用其函数,例如自定义 disableScrollView
函数。
如果 AviewController
在 View 层次结构中有固定位置,您可以通过应用程序委托(delegate)的 window
属性找到它,例如
UIApplication.sharedApplication().delegate.window.rootViewController
Root View Controller 可能是一个 UINavigationController
,在这种情况下您必须深入挖掘。
使用NSNotificationCenter
。在AviewController
的viewDidLoad
中,注册通知:
NSNotificationCenter.defaultCenter().addObserver(self,
selector: "disableScrollView:",
name: "DisableScrollView",
object: nil)
实现 disableScrollView
函数(使用 @objc
将其用作选择器):
@objc func disableScrollView(notification: NSNotification) {
// do something
}
当需要关闭scroll view时,调用即可
NSNotificationCenter.defaultCenter().postNotificationName(
"DisableScrollView", object: nil)
来自 BviewController
。
关于ios - Swift - 从 BviewController 调用 AviewController 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31625328/
我有两个 viewControllers(AviewController 和 BviewController)在没有使用 segue 的情况下连接。在 AviewController 中,我有一个 U
我是一名优秀的程序员,十分优秀!