如何在 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
}
目前我的函数如下所示:
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
}