我在基本视图控制器中有一个容器视图。当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
}
答案 0 :(得分:2)
基本上,您要做的是:
在您的prepare方法中创建一个var并将其设置为等于VC。现在,您可以访问并可以从基本控件中控制第二个视图控制器/类。因此,如果您的工作表代表设置正确(即VC.xdelegate = self),则可以这样调用它:
self.secondVC.xdelegate.updateFrame(frame: newFrame)