我在基本视图控制器中有一个容器视图。当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
}

最佳答案

基本上,您要做的是:

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

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

关于ios - 在基本VC中按下按钮时,如何在容器 View 内更改容器的框架?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55736886/

10-16 18:17