展示后如何摆脱 xib?

How do i get rid of xib after presenting it?

我正在创建自己的 UIImagePicker 叠加层并使用 Xib 来显示叠加层。每当我呈现图像选择器时,它似乎呈现两次,一次是在我调用主包加载笔尖时,另一次是在我明确呈现图像选择器控制器时。我遇到的主要问题是当我关闭 imagepickercontroller 时,第一个出现,这很好,但是 xib 的底层视图仍然存在并且无论我做什么都不会消失。

我尝试将 Apple 在其网站上关于如何创建自定义 uiimagepickercontroller 的 Objective-C 示例项目转换为 Swift。我不确定我做错了什么,这是我的代码:

func showImagePickerForSourceType(sourceType: UIImagePickerControllerSourceType) {
    let picker = UIImagePickerController()
    picker.modalPresentationStyle = UIModalPresentationStyle.CurrentContext
    picker.sourceType = sourceType
    picker.delegate = self

    if sourceType == UIImagePickerControllerSourceType.Camera {
        //gets rid of the out of the box imagepicker
        picker.showsCameraControls = false

        //loads the overlay xib for the camera
        NSBundle.mainBundle().loadNibNamed("OverlayView", owner: self, options: nil)
        self.overlayView.frame = (picker.cameraOverlayView?.frame)!
        picker.cameraOverlayView = self.overlayView
        self.overlayView = nil

        //makes the image capture screen the full screen size
        let screenSize: CGSize = UIScreen.mainScreen().bounds.size
        let cameraAspectRatio: Float = 4.0 / 3.0
        let imageWidth:Float = floorf(Float(screenSize.width) * cameraAspectRatio)
        let scale: Float = ceilf((Float(screenSize.height + 120) / imageWidth) * 10.0) / 10.0
        picker.cameraViewTransform = CGAffineTransformMakeScale(CGFloat(scale), CGFloat(scale))

    }
    self.imagePickerController = picker
    self.presentViewController(self.imagePickerController, animated: true, completion: nil)
}

这是 xib 上关闭视图的按钮的代码。我怎样才能解决这个问题?因为我正在打印导航堆栈上的视图控制器数组,它只显示一个。

    @IBAction func goBack(sender: AnyObject) {
    self.imagePickerController.dismissViewControllerAnimated(true, completion: nil)
}

听起来您的视图控制器的 view 插座除了 overlayView 插座之外还连接到 .xib 文件中的视图。这可能会导致您所描述的情况。