我看到这个话题在别处讨论,但我没有看到我的问题的答案。
我将UIView子类化为创建自定义视图。目前我正在使用界面构建器创建UIView,然后将自定义类选项设置为我的子类。
第一个问题。当我这样做时,如何从我的代码中引用该实例?我有一个公共功能,我想打电话来更新我的视图,但我不知道如何从我的视图控制器调用它
第二个问题。我在视图控制器中创建了一个类的实例,只是玩游戏,我注意到我创建的公共函数不能用于该实例。从UIView继承后可以创建公共函数吗?
答案 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
,您可以在我的红框中看到:
3)点击Show the Assistant Editor
,然后按住view
拖动到vc
,设置名称custom
:
4)然后在vc
viewDidload
函数中调用公共函数:
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var custom: CunstomView!
override func viewDidLoad() {
super.viewDidLoad()
custom.printHello()
}
}
5)结果:
答案 1 :(得分:0)
您可以尝试使用下面的方法从IB更新您的视图。
目标-C:
-(void)awakeFromNib {
[super awakeFromNib];
//do something
}
夫特
override func awakeFromNib() {
super.awakeFromNib()
}
第二个问题
您是说自定义视图没有回答您在视图控制器中创建的功能吗?
答案 2 :(得分:0)
第一个问题。当我这样做时,如何从中引用该实例 我的代码?我有一个公共功能,我想打电话给我更新 查看,但我不知道如何从我的视图控制器调用它
答:视图在app中不能单独存在。您需要viewcontroller来处理自定义视图。然后在该VC中,您可以将视图称为IBOutlet。
第二个问题。我在我的内部创建了一个类的实例 视图控制器只是玩,我注意到公共功能 我创建的该实例不可用。我可以创建公开吗? 从UIView继承时的函数?
答:您可以创建自定义视图的公共功能,只需在头文件中声明它们即可。然后导入VC中的标头。然后你可以访问它。