swift - 如何在 Swift 中创建一个函数,根据当前 View 删除然后添加特定的 subview ?

标签 swift function view refactoring subview

目前我的函数如下所示:

 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
}

关于swift - 如何在 Swift 中创建一个函数,根据当前 View 删除然后添加特定的 subview ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34969086/

相关文章:

Swift firestore updateData 不创建新文档

swift - 我可以阻止 XCode 因 fatalError/preconditionFailure 而中断吗?

c++ - 将动态创建的数组作为参数传递

c - 为什么这个函数在完成递归运行后返回整数 17?

c - 程序在函数循环后停止

Android sherlock 搜索 View

ios - DateFormatter 在 Swift 中为没有时间的特定日期字符串返回 nil

ios - 如何在 iOS 13 上更改状态栏背景颜色和文字颜色?

sql - 如何在 postgresql 中更改所有 View 的所有者

MySQL - 我的 View 很慢