IOS Swift中的容器视图中未触发按钮操作

时间:2016-06-10 07:55:17

标签: ios swift uibutton uicontainerview

enter image description here我是IOS编程新手。我创建了带有容器视图(ContainerViewController.swift)的viewController(ViewController.swift),它有2个视图(FirstViewController.swift和SecondViewViewcontroller.swift),然后我在FirstViewcontroler中添加了按钮并为此添加了@IBAction,但是我是无法单击按钮(操作无效)。在容器视图中,segue添加了以下代码

ContainerViewController.swift

func segueIdentifierReceivedFromParent(button: String){
    buttonClick = button
    if button == "first"
    {
        self.segueIdentifier = "firstSegue"
        self.performSegueWithIdentifier(self.segueIdentifier, sender: nil)
    }
    else if button == "second"
    {
        self.segueIdentifier = "secondSegue"
        self.performSegueWithIdentifier(self.segueIdentifier, sender: nil)
    }
}

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {

    if segue.identifier == segueIdentifier{

        //Avoids creation of a stack of view controllers
        if lastViewController != nil{
            lastViewController.view.removeFromSuperview()
        }

        vc = segue.destinationViewController //as! UIViewController

       self.addChildViewController(vc)
       vc.view.frame = CGRect(x: 0,y: 0, width:self.view.frame.width,height:self.view.frame.height)

      self.view.addSubview(vc.view)
      vc.didMoveToParentViewController(self)
}

FirstViewController.swift

override func viewDidLoad() {
    super.viewDidLoad()
}

@IBAction func getQuotesAction(sender: UIButton){
    print("Button is Clicked")
}

这个getQuotesAction按钮不起作用 请帮我解决这个问题。谢谢你的回复。

3 个答案:

答案 0 :(得分:1)

在我的情况下,父视图控制器之一被ARC淘汰。该按钮用作UI元素(点击时变灰),其插座正在工作,我能够更新其隐藏状态,仅未激活该动作。

我在代码的某个点传递了视图控制器的视图,但是视图控制器是一个局部变量。当我将其移至类级别时(该类的实例化对象保留在内存中),它解决了我的问题。我花了将近一天的时间,希望这可以帮助您减少工作量!

答案 1 :(得分:0)

我通过增加containerView的高度来修复此问题,因为我的firstviewcontroller高度高于containerView。现在,子视图控制器操作正常工作。

答案 2 :(得分:-1)

上面的代码告诉我们在按下一个潜在的成功按钮后要去哪个视图控制器。该按钮不适用于上述代码。创建一个插座动作...转到故事板,使用分屏操作(右上角两个圆圈),控制单击并跟踪您的按钮到您的班级并释放。为您的按钮命名,并确保选择操作。把你的各自放在那些括号内。应该看起来像这样:

@IBAction func btnClick(sender: UIButton) {}