2017-03-06 6 views
0

サブビューを選択し、スワイプとnサブビューを使用してサブビューを操作する方法を教えてください。今のところ私は3つのサブビューと3つの画像を選択しています。 しかし、私はそれを作成した後、どのようにタグ2でサブビューを削除することができますか?指定サブビュースウィフトを選択

func addSubView() { 
    for index in 1...3 { 
     let image: UIImage = UIImage(named: String(index))! 
     imageView = UIImageView(image: image) 
     imageView.tag = index 
     imageView.isUserInteractionEnabled = true 
     let tapGesture = UITapGestureRecognizer(target: self, action: #selector(ViewController.removeSubview)) 
     imageView.addGestureRecognizer(tapGesture) 
     imageView.frame = CGRect(x: randomNumber(range: 60...300), y: randomNumber(range: 60...400), width: 50, height: 50) 
     print(imageView) 
     self.backgroundImageView.addSubview(imageView) 
    } 
} 

func removeSubview() { 



} 

答えて

0

多分配列に追加できますか?タグを使用することはめったに最適な解決策ではありません。

var imageViews = [UIImageView]() 

func addSubView() { 
    for index in 1...3 { 
     let image: UIImage = UIImage(named: String(index))! 
     imageView = UIImageView(image: image) 
     imageView.tag = index 
     imageView.isUserInteractionEnabled = true 
     let tapGesture = UITapGestureRecognizer(target: self, action: #selector(ViewController.removeSubview)) 
     imageView.addGestureRecognizer(tapGesture) 
     imageView.frame = CGRect(x: randomNumber(range: 60...300), y: randomNumber(range: 60...400), width: 50, height: 50) 
     print(imageView) 
     self.backgroundImageView.addSubview(imageView) 
     imageViews.append(imageView) 
    } 
} 

func removeSubview(at index: Int) { 
    imageViews[index].removeFromSuperview() 
} 
+0

をDosn'tが私のために働きます... –

1

あなたは、パラメータとしてタグ番号を取る機能removeSubviewWithTag(_:)書くことができます:

func removeSubviewWithTag(_ tag: Int) { 
    if let viewWithTag2 = backgroundImageView.viewWithTag(tag) { 
    viewWithTag2.removeFromSuperview() 
    } 
} 

をそして必要に応じてそれを呼び出す:

removeSubviewWithTag(2) 

あなたがどうかを知りたい場合は関数がサブビューを見つけて削除することができた場合、破棄可能なBool結果を返すことができます:

@discardableResult func removeSubviewWithTag(_ tag: Int) { 
    if let viewWithTag2 = backgroundImageView.viewWithTag(tag) { 
    viewWithTag2.removeFromSuperview() 
    return true 
    } else { 
    return false 
    } 
} 

そして、次のようにそれを呼び出す:

if removeSubviewWithTag(2) { 
    print("Removed view") 
} else { 
    print("unable to remove view") 
} 
関連する問題