/ / Como remover apenas subvisualizações adicionadas pelo usuário do meu UIView - ios, swift, uiview, subviews

Como remover apenas subvisualizações adicionadas pelo usuário do meu UIView - ios, swift, uiview, subviews

Eu estou tentando remover todas as subvisualizações que eu adicionei à minha opinião, então eu tenho implementado um loop para iterar sobre as subvisualizações com o seguinte:

for subview in view.subviews {
println(subview)
//subview.removeFromSuperview()
}

Eu testei isso adicionando um UILabel ao meu ponto de vista eentão correu este código. A saída continha meu UILabel, mas também um _UILayoutGuide. Então, minha pergunta é como posso determinar se uma subvisualização é uma que eu adicionei ou uma que o sistema adicionou?

Respostas:

13 para resposta № 1

Se você quiser apenas evitar que o loop remova o _UILayoutGuide (que é de classe UILayoutSupport), tente isto:

for subview in self.view.subviews {
if !(subview is UILayoutSupport) {
print(subview)
subview.removeFromSuperview()
}
}

E, em geral, se você quiser evitar a remoção de exibições que não sejam as _UILayoutGuide e se você conhece os tipos específicos de subvisualizações que você gostaria de remover do seu UIView, você pode limitar as subvisualizações que você remove a esses tipos, ex:

for subview in view.subviews {
if subview is ULabel {
println(subview)
subview.removeFromSuperview()
}
}

10 para resposta № 2

Uma opção é fornecer todas as visualizações que você adicionar uma tag específica. Em seguida, remova-os somente se eles tiverem essa tag.

userCreatedView.tag = 100;

...

for subview in view.subviews {
if (subview.tag == 100) {
subview.removeFromSuperview()
}
}

Você também pode manter uma matriz de todas as subvisualizações que o usuário adicionou, então verifique se essa subvisualização está em seu usuárioAddedViewsArray

Ou você pode criar uma subclasse de UIView para as visualizações adicionadas por seu usuário e, em seguida, remover apenas as subvisualizações que são dessa classe.


1 para resposta № 3

Eu resolvo o problema desse jeito .... primeiro eu adicionei sub vista

  • [self.view addSubview: genderPicker];

em seguida, remova apenas essa subvisão da vista

  • [genderPicker removeFromSuperview];

0 para a resposta № 4

indicador desligado por diversão de entrada de seqüência de caracteres Swift 2.2 e acima

func activityonoff(viewcontroler:UIViewController,string:String){
let container: UIView = UIView()
let loadingView: UIView = UIView()
if string == "on"{
container.frame = viewcontroler.view.frame
container.center = viewcontroler.view.center
container.backgroundColor = UIColor.whiteColor()
container.alpha = 1
container.tag = 1

loadingView.frame = CGRectMake(0, 0, 80, 80)
loadingView.center = container.center
loadingView.backgroundColor = UIColor(red: 4/255, green: 68/255, blue: 68/255, alpha: 0.7)
loadingView.clipsToBounds = true
loadingView.layer.cornerRadius = 10

let actInd: UIActivityIndicatorView = UIActivityIndicatorView()
actInd.frame = CGRectMake(0.0, 0.0, 40.0, 40.0);
actInd.activityIndicatorViewStyle = UIActivityIndicatorViewStyle.WhiteLarge
actInd.center = CGPointMake(loadingView.frame.size.width / 2,loadingView.frame.size.height / 2);
loadingView.addSubview(actInd)
container.addSubview(loadingView)
viewcontroler.view.addSubview(container)
actInd.startAnimating()
}
else{
for v in viewcontroler.view.subviews{
if v.tag == 1{
v.removeFromSuperview()
}
}

}

}