【问题标题】:iOS Swift - Accessing method in Child from ParentiOS Swift - 从父级访问子级中的方法
【发布时间】:2015-04-23 22:08:19
【问题描述】:

在我的应用程序中,我有一个情节提要,其中布置了一堆元素。我正在从“ViewController.swift”设置这些元素的属性。

故事板上有两个 UIView,它们已被子类化以允许绘图方法。它们将用作“签名”字段,用户可以在其中将他们的签名签名到框中。这工作正常。

UIViews 的子类方法之一是“eraseBitmap”,它清除绘图的 UIView。

class SigView: UIView {
    ...
    func eraseBitmap() {
        path = nil
        cache = nil
    }
}

我有一个按钮调用父 VC 中的“擦除”函数。

我试过了

func erase() {   
    SigView.eraseBitmap()
}

但是,这会产生一个错误,指出我缺少一个参数。然而,eraseBitmap 不接受任何参数。

如果我添加一个参数,无论它是什么,我都会收到“SigView not convertible to...”错误。

有什么想法,或者有什么更好的方式来编码这部分吗?

【问题讨论】:

  • 什么是“SigView”?一个班级的名字?类实例的名称?
  • SigView 是子类 UIView 的类名。编辑 OP 以增加清晰度。

标签: ios swift uiview


【解决方案1】:

您的 SigView 类定义了一个方法 eraseBitmap() - 类似于:

class SigView : UIView {
  func eraseBitmap () { /* ... */ }
}

您将将此方法应用于SigView 的实例。因此,您的 UI 中有一个 SigView 的实例,例如:

var aView : SigView = ...

然后您将使用:

func erase () {
  aView.eraseBitmap()
}

或许

func erase (view:SigView) {
  view.eraseBitmap()
}

您遇到的错误是由于尝试在类上调用非类方法引起的。非类方法只能在类的实例上调用。

【讨论】:

  • 谢谢。我意识到我在父 VC 中将我的 var 声明为 :UIView 而不是 :SigView
猜你喜欢
  • 1970-01-01
  • 2017-04-18
  • 1970-01-01
  • 1970-01-01
  • 2014-07-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多