如何在 Swift 中创建一个函数,根据当前视图删除然后添加特定的子视图?

How to create a function in Swift that removes then adds a specific subview based on what the current view is?

目前我的函数如下所示:

 func newTile () {
if mainTileTargetView == tileTargetView1 {
      self.tileTargetView1.removeFromSuperview()
      let tileView = UIView(frame: CGRectMake(0, 0, ScreenWidth, ScreenHeight))
      self.view.addSubview(tileView)
      self.tileTargetView2 = tileView
      self.view.addSubview(tileTargetView2)
      self.mainTileTargetView = self.tileTargetView2

      if self.mad == true {
        self.view.bringSubviewToFront(self.madVaultBoyImage)
      } else {
        self.view.bringSubviewToFront(self.thumbsUpVaultBoyImage)
      }


    } else if mainTileTargetView == tileTargetView2{
      self.tileTargetView2.removeFromSuperview()
      let tileView = UIView(frame: CGRectMake(0, 0, ScreenWidth, ScreenHeight))
      self.view.addSubview(tileView)
      self.tileTargetView3 = tileView
      self.view.addSubview(tileTargetView3)
      self.mainTileTargetView = self.tileTargetView3

      if self.mad == true {
        self.view.bringSubviewToFront(self.madVaultBoyImage)
      } else {
        self.view.bringSubviewToFront(self.thumbsUpVaultBoyImage)
      }
}

继续浏览更多。正如您所看到的,目前有很多重复的代码,它非常混乱。有没有办法重构它并使其看起来更整洁?

这是我的版本:

 func newTile () {

    let tileView = UIView(frame: CGRectMake(0, 0, ScreenWidth, ScreenHeight))
    self.view.addSubview(tileView)

    var nextTarget: UIView!
    switch mainTitleTargetView{
    case titleTargetView1:
        nextTarget = titleTargetView2
    default:
        nextTarget = titleTargetView3
    }

    replaceTitle(title: mainTitleTargetView, withTitle: nextTarget, forTileView: tileView)

    if self.mad == true {
        self.view.bringSubviewToFront(self.madVaultBoyImage)
    } else {
        self.view.bringSubviewToFront(self.thumbsUpVaultBoyImage)
    }
}

func replaceTitle(title title1: UIView, withTitle title2: UIView, forTileView tile: UIView){
    title1.removeFromSuperview()
    title2 = tile
    self.addSubview(title2)
    self.mainTitleTargetView = title2
}