目前,我的函数如下所示:

 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
}

07-24 19:46
查看更多