为什么每次加载新的xib文件?为什么不替换前一个?

时间:2017-09-07 07:22:08

标签: ios iphone swift xcode xib

我的vc代码看起来像这样。showClick函数是一个按钮点击功能。点击这个按钮我要加载一个xib文件。这是一个音乐播放器。

//
//  PlayerTestOneVC.swift
//  rapapediaPlayer
//
//  Created by rumy hasan on 9/3/17.
//  Copyright © 2017 rumyhasan. All rights reserved.
//

import UIKit
import Jukebox


var viewOne = UIView()
var viewTow = UIView()
var playerMainView: UIView?
var viewOfAll: UIView?

class PlayerTestOneVC: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.
    }


    @IBAction func showClick(_ sender: Any) {
        if let keywindow = UIApplication.shared.keyWindow{
            if var viewtag = keywindow.viewWithTag(50){
                viewtag.removeFromSuperview()

            }
            if let player = Bundle.main.loadNibNamed("Player", owner: self, options: nil)?.first as? Player{
                viewOne = player.viewOne
                viewTow = player.viewTow
                //player.bellowBtn.addTarget(self, action: #selector(change), for: .touchUpInside)
                //playerMainView = player

                player.ppBtnOut.isHidden = true

                player.frame = keywindow.frame
                playerMainView = player
                viewOfAll = player
                viewOfAll?.tag = 50
                playerMainView = player
                keywindow.addSubview(viewOfAll!)

            }


        }
    }



}

我的xib文件看起来像这样。

enter image description here

单击下面的

视图如下所示

enter image description here

没关系,正常工作并播放歌曲但现在如果我再次单击“显示”按钮,它会在现有视图上方创建一个新视图,并且两个播放器都播放自己的音频,我可以同时听到拖曳但是我需要用新的替换第一个。我可以这样做吗?

我的xib文件位于按钮点击代码下方。

@IBAction func belowClick(_ sender: Any) {
    if dropDown{
        UIView.animate(withDuration: 0.5, delay: 0, options: .curveEaseOut, animations: {

            viewOfAll?.frame = (UIApplication.shared.keyWindow?.frame)!
        }, completion: { (completedAnimation) in

        })

    }else{
        UIView.animate(withDuration: 0.5, animations: {
            viewOfAll?.frame = self.viewOne.frame
            viewOfAll?.frame = CGRect(x: 0 , y: (UIApplication.shared.keyWindow?.frame.height)! - 70, width: (UIApplication.shared.keyWindow?.frame.width)!, height: 70)
        })

    }
    dropDown = !dropDown
}

1 个答案:

答案 0 :(得分:0)

我认为你的player开始在其他线程中播放音频文件。只要您点击“显示”按钮,就可以在不停止上一个player的情况下创建新的player。您只是通过viewtag.removeFromSuperview()删除了它的视图,因为它继续播放上一个和新的音频文件。

我认为,您可以创建stop函数并在删除它之前调用它。