在我的自定义视图的控制器中创建自定义IBAction

时间:2017-06-30 11:37:32

标签: ios swift uiview swift3

首先我不能发布任何代码,但我会尽力描述我的问题。

确定。我创建了一个自定义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

再次..无法发布代码。欢迎使用实例

的片段或链接

谢谢!

2 个答案:

答案 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的。 希望这可能有所帮助。

相关问题