2016-06-29 18 views
0

Wenn Benutzer auf Hinzufügen klicken, füge ich die Ansicht auf UIWindow hinzu. Wenn der Benutzer erneut auf Hinzufügen klickt, möchte ich diese Ansicht zuerst entfernen und sie erneut hinzufügen.Ansicht von UIViewController von UIWindow entfernen

ich diesen Code Ansicht hinzufügen auf UIWindow verwendet haben:

ProgressVC *vc = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"IDProgressVC"]; 
[[[[UIApplication sharedApplication] delegate]window] addSubview:vc.view]; 

Für entferne ich diesen Code versucht:

[vc.view removeFromSuperview]; 
[[[[UIApplication sharedApplication] delegate]window] setNeedsLayout]; 
vc = nil; 

Jede Hilfe wird geschätzt.

+0

Versuchen Sie, was das Problem ist .. –

+0

@RohitKP diese Ansicht noch in UIWindow erscheinen wird. –

+0

Warum legen Sie keine Eigenschaft für UIVIew fest, die vc.view enthält, und Sie können die Eigenschaft mithilfe der Eigenschaft entfernen? –

Antwort

1

Diese

// Make this global property 

@property(nonatomic, strong) UIView * currentView; 

//store the view in gloabal property 
ProgressVC *vc = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"IDProgressVC"]; 
currentView = vc.view; 
[[[[UIApplication sharedApplication] delegate]window] addSubview:currentView]; 

//remove it 
[currentView removeFromSuperview]; 
[[[[UIApplication sharedApplication] delegate]window] setNeedsLayout]; 
currentView = nil; 
+0

Danke Kumpel, es funktioniert. –

1

Stellen Sie sicher, dass beide vc dasselbe Objekt nicht anders ist.

Ich meine, wenn Sie vc.view zu diesem Zeitpunkt hinzufügen Sie zuweisen und init-Objekt und wenn Sie dann wieder entfernen Sie Alloc und Init dann beide unterschiedliche Instanz der gleichen Klasse sind.

So ist es besser Instanz Variable oder Eigenschaft wie es nur einmal

ProgressVC *vc und alloc zu erklären und diese vc aus dem Fenster hinzufügen oder entfernen.

Es kann Ihr Problem lösen, denke ich.

+0

Ok. Lass es mich versuchen. –

0

In Swift 3,2

let storybord = UIStoryboard.init(name: "Main", bundle: nil) 
let appDelegate = UIApplication.shared.delegate as! AppDelegate 

let vc = storybord.instantiateViewController(withIdentifier: "IDProgressVC") 
       as IDProgressVC 

currentVC = vc.view 

appDelegate.window?.addSubview(currentVC!) 

// Remove it 
currentVC?.removeFromSuperview() 

appDelegate.window?.setNeedsLayout() 

currentVC = nil