子类化UIView

时间:2016-11-24 02:00:56

标签: ios swift uiview

我看到这个话题在别处讨论,但我没有看到我的问题的答案。

我将UIView子类化为创建自定义视图。目前我正在使用界面构建器创建UIView,然后将自定义类选项设置为我的子类。

第一个问题。当我这样做时,如何从我的代码中引用该实例?我有一个公共功能,我想打电话来更新我的视图,但我不知道如何从我的视图控制器调用它

第二个问题。我在视图控制器中创建了一个类的实例,只是玩游戏,我注意到我创建的公共函数不能用于该实例。从UIView继承后可以创建公共函数吗?

3 个答案:

答案 0 :(得分:2)

很容易做到:

1)子类UIView创建CustomView,在项目中添加公开function

import UIKit

class CunstomView: UIView {

/*
// Only override draw() if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
override func draw(_ rect: CGRect) {
    // Drawing code
}
*/

public func printHello() {


    print("hello")
}
}

2)在storyboard中,将UIView拖到vc,然后将课程设置为CunstomView,您可以在我的红框中看到:

drag <code>UIView</code>

3)点击Show the Assistant Editor,然后按住view拖动到vc,设置名称custom

enter image description here

4)然后在vc viewDidload函数中调用公共函数:

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var custom: CunstomView!

    override func viewDidLoad() {
        super.viewDidLoad()

        custom.printHello()
    }


}

5)结果:

the result

答案 1 :(得分:0)

您可以尝试使用下面的方法从IB更新您的视图。

目标-C:

-(void)awakeFromNib {
    [super awakeFromNib];

    //do something
}

夫特

override func awakeFromNib() {
    super.awakeFromNib()
}

第二个问题

您是说自定义视图没有回答您在视图控制器中创建的功能吗?

答案 2 :(得分:0)

  

第一个问题。当我这样做时,如何从中引用该实例   我的代码?我有一个公共功能,我想打电话给我更新   查看,但我不知道如何从我的视图控制器调用它

答:视图在app中不能单独存在。您需要viewcontroller来处理自定义视图。然后在该VC中,您可以将视图称为IBOutlet。

  

第二个问题。我在我的内部创建了一个类的实例   视图控制器只是玩,我注意到公共功能   我创建的该实例不可用。我可以创建公开吗?   从UIView继承时的函数?

答:您可以创建自定义视图的公共功能,只需在头文件中声明它们即可。然后导入VC中的标头。然后你可以访问它。