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