在基本VC中按下按钮时,如何在容器视图内更改容器的框架?

时间:2019-04-17 22:38:59

标签: ios swift containers

我在基本视图控制器中有一个容器视图。当viewWillApear我更改容器视图的框架,以便它不会在屏幕上消失。在基本VC上有一个按钮,当按下该按钮时,应“调高”之前移下的VC。我该如何实现?

我已经在IBAction内部尝试了基本VC中的按钮来调用用于更改帧的方法,但是当我这样做时,我遇到了runTimeError:

    @objc func CommentsTapped(_ tap: UITapGestureRecognizer) {
    //Bring up the comments view and load all data into it.
    UIView.animate(withDuration: 0.2, delay: 0, usingSpringWithDamping: 0.8, initialSpringVelocity: 0.9, options: .curveEaseOut, animations: {

        self.commentsDelegate!.updateCommentSheet(frame: self.initalFrame.offsetBy(dx: 0, dy: 227))//This method in implemented in the base VC given that it is specified in the protocol for the commentsVC
    })
}
  

线程1:致命错误:在展开可选值时意外发现nil

方法的实现:

class BaseVC: UIViewController, CommentCellDelegate {

@IBOutlet weak var commentsContainer: UIView!

func updateCommentSheet(frame: CGRect) {
    commentsContainer.frame = frame
}

1 个答案:

答案 0 :(得分:2)

基本上,您要做的是:

在您的prepare方法中创建一个var并将其设置为等于VC。现在,您可以访问并可以从基本控件中控制第二个视图控制器/类。因此,如果您的工作表代表设置正确(即VC.xdelegate = self),则可以这样调用它:

self.secondVC.xdelegate.updateFrame(frame: newFrame)