滚动视图内的UIViews按钮不会触发IBAction

时间:2016-03-19 22:45:01

标签: ios swift xcode7

我有一个启用了分页的水平滚动视图,因此每个页面都会显示一个不同的xib视图。某些xib视图中包含链接到IBAction的按钮。我在每个xib的类中声明了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中声明的IBActions。

这里的一个视图是怎样的。我没有在xib中添加UIViewController,我只使用了UIView。我猜这可能是问题的一部分,但我不能使用UIViewController作为子视图,因为它给出了一个错误。 enter image description here

enter image description here

enter image description here 任何帮助表示赞赏,

2 个答案:

答案 0 :(得分:1)

问题在于您将carView声明为局部变量,因此一旦函数退出就会释放它,因为没有任何东西可以保存强引用。视图元素本身由scrollview引用,因此它们不会被释放,但不再是视图控制器实例来处理事件。

如果您将carViewclockView更改为属性,则会保留强引用。

答案 1 :(得分:0)

问题似乎是您在ViewControllers中使用ViewControllers。如果您想通过storyboard执行此操作,则必须使用containerView并使用随附的embed segue将ViewController放置在此containerView中。

如果您想以编程方式执行此操作,则必须将子视图控制器添加到父视图控制器中,该视图控制器包含您拥有的carView和clockView的子视图控制器。

P.S。你调用视图控制器carView有点令人困惑,或许CarViewController不那么令人困惑:)