滚动视图中的 UIViews 按钮不触发 IBAction
UIViews buttons inside a scrollview not triggering IBAction
我有一个启用了分页的水平滚动视图,因此每个页面都会显示一个不同的 xib 视图。一些 xib 视图中有链接到 IBAction 的按钮。我在每个 xib 的 class 中声明了 IBAction。一切看起来都很好,按钮显示点击效果等等,但是 IBAction 没有被触发?
这是一个代码示例:
let clockView: ClockViewController = ClockViewController(nibName: "ClockViewController", bundle: nil)
let carView: CarViewController = CarViewController(nibName: "CarViewController", bundle: nil)
scrollview.addSubview(clockView.view)
carView.view.frame.origin.x = self.view.frame.width
scrollview.addSubview(carView.view)
clockView 和 carView 都有按钮,按钮链接到分别在 ClockViewController.swift 和 CarViewController.swift 中声明的 IBAction。
这是其中一个视图的样子。我没有在 xib 中添加 UIViewController,我只使用了一个 UIView。我猜这可能是问题的一部分,但我不能将 UIViewController 用作子视图,因为它给出了错误。
感谢任何帮助,
问题似乎是您在 ViewController 中使用了 ViewController。如果您想通过故事板执行此操作,则必须使用 containerView 并使用它附带的嵌入 segue 将 ViewController 放置在此 containerView 中。
如果您想以编程方式执行此操作,则必须将子 viewcontroller 添加到包含您拥有的这些子视图控制器的父 viewcontroller,即 carView 和 clockView .
P.S。调用视图控制器 carView
有点令人困惑,也许 CarViewController
不那么令人困惑 :)
问题是您将 carView
声明为局部变量,因此一旦函数退出它就会被释放,因为没有任何东西可以保持强引用。视图元素本身被滚动视图引用,因此它们不会被释放,但将不再有视图控制器实例来处理事件。
如果您将 carView
和 clockView
更改为属性,则会保留强引用。
我有一个启用了分页的水平滚动视图,因此每个页面都会显示一个不同的 xib 视图。一些 xib 视图中有链接到 IBAction 的按钮。我在每个 xib 的 class 中声明了 IBAction。一切看起来都很好,按钮显示点击效果等等,但是 IBAction 没有被触发? 这是一个代码示例:
let clockView: ClockViewController = ClockViewController(nibName: "ClockViewController", bundle: nil)
let carView: CarViewController = CarViewController(nibName: "CarViewController", bundle: nil)
scrollview.addSubview(clockView.view)
carView.view.frame.origin.x = self.view.frame.width
scrollview.addSubview(carView.view)
clockView 和 carView 都有按钮,按钮链接到分别在 ClockViewController.swift 和 CarViewController.swift 中声明的 IBAction。
这是其中一个视图的样子。我没有在 xib 中添加 UIViewController,我只使用了一个 UIView。我猜这可能是问题的一部分,但我不能将 UIViewController 用作子视图,因为它给出了错误。
问题似乎是您在 ViewController 中使用了 ViewController。如果您想通过故事板执行此操作,则必须使用 containerView 并使用它附带的嵌入 segue 将 ViewController 放置在此 containerView 中。
如果您想以编程方式执行此操作,则必须将子 viewcontroller 添加到包含您拥有的这些子视图控制器的父 viewcontroller,即 carView 和 clockView .
P.S。调用视图控制器 carView
有点令人困惑,也许 CarViewController
不那么令人困惑 :)
问题是您将 carView
声明为局部变量,因此一旦函数退出它就会被释放,因为没有任何东西可以保持强引用。视图元素本身被滚动视图引用,因此它们不会被释放,但将不再有视图控制器实例来处理事件。
如果您将 carView
和 clockView
更改为属性,则会保留强引用。