首先我不能发布任何代码,但我会尽力描述我的问题。
确定。我创建了一个自定义Swift视图文件view.xib
并将其加载到view.swift
我加载Xib
。 Xib是label
之上的简单imageview
。
我可以在IBOutlet
文件中创建view.swift
,例如切换图像或更改标签。 view.swift
只是扩展UIView
。
所以现在我将这个视图集成到我的Storyboard
中,它有一个Controller(让我们称之为otherVC.swift
)。现在otherVC.swift
希望获得view.swift
被触及的信息。我尝试设置IBAction
,但没有选项可以设置,仅在IBOutlet
上。在一些Googe之后,我发现类UiControl
具有设置IBAction
的机制。
所以我view.swift
不再延伸UIView
,而是UIControl
。之后,我可以使用触摸事件创建IBAction
。 (如触摸或触摸内部)当在模拟器中运行带有视图的应用程序时,我可以单击视图但不会调用IBAction。
所以我的问题是我如何在其他VC中为我的View设置IBAction
,或者为特定视图创建我自己的IBActions
。
再次..无法发布代码。欢迎使用实例
的片段或链接谢谢!
答案 0 :(得分:2)
我认为很难创建自定义IBAction(如果不是不可能),但你的问题还有许多其他解决方案,如委托,通知和关闭器,所以我建议使用闭门器,这是我认为最简单的方法。下面是代码如何使用闭门器
class View {
var someButtonTapped: (UIButton) -> Void = {_ in }
@IBAction private func someButtonTappedAction(_ sender: UIButton){
someButtonTapped(sender)
}
}
在您的控制器中
objectOfYourCustomView.someButtonTapped = {sender in
//handle action
}
答案 1 :(得分:0)
我理解的是我在此基础上回答。 创建您想要在viewcontroller中访问的视图的公共属性。 您将能够访问customview。 propertyName的。 希望这可能有所帮助。