2016-05-06 13 views
0

In meinem ersten Viewcontroller mit ImmobilienUIViewController verliert den Überblick über Immobilien

@property (nonatomic, strong) UIView* snapShotView; 

Und ich rufe

self.snapShotView = [[UIScreen mainScreen] snapshotViewAfterScreenUpdates:YES]; 
[self.view addSubview: self.snapShotView]; 

Dann präsentiere ich zwei Viewcontrollers oben drauf und sie wieder entlassen. Wenn ich wieder auf dem ersten ViewController bin, ist die Eigenschaft snapShotView leer, aber die Ansicht wird weiterhin angezeigt. Ich möchte die SnapShotView entfernen, aber ich habe keine Referenz mehr.

Wenn ich nur einen ViewController über dem ersten ViewController anzeigen und ihn verwerfen, verweist die Eigenschaft immer noch auf die richtige Ansicht. Wenn ich eine weitere Ansicht darüber präsentiere und verlasse, ist die Eigenschaft null, sobald die zusätzlichen zwei ViewControllers geschlossen sind.

Wie kann ich den SnapshoView referenzieren und entfernen?

+0

entfernt, wo läuft dieser Code? 'self.snapShotView = [[UIScreen mainScreen] snapshotViewAfterScreenUpdates: JA];' in 'viewWillAppear'? – marosoaie

+0

verstecken Sie Ihre Schnappschussansicht bei Klick auf Zurück-Taste –

+0

Der Code läuft in einer Methode, die ich erstellt habe und bevor ich den ersten ViewController – HasenBaumeister

Antwort

0

Es ist wirklich seltsam, dass Sie den Verweis auf Unteransicht verlieren, aber sowieso, wenn Sie den Verweis auf Unteransicht verlieren und deshalb, wenn Sie nicht in der Lage sind, die Unteransicht zu entfernen, die Sie hinzugefügt haben, und wenn das Ihr Problem ist, I ' ll sagt, dass Sie die Referenz nicht den Subview aus dem Blick entfernen :)

Sie etwas tun kann, wie dies

[[self.view subviews] makeObjectsPerformSelector:@selector(removeFromSuperview)]; 

diese Aussage :) die Subviews alle ohne Bezug aus Ihrer Sicht entfernen wird :)

und in c ase Sie haben mehrere Ansichten zu Ihrer Ansicht hinzugefügt und nur eine bestimmte Ansicht nutzen Tags :)

self.snapShotView = [[UIScreen mainScreen] snapshotViewAfterScreenUpdates:YES]; 
self.snapShotView.tag = someValue; 
[self.view addSubview: self.snapShotView]; 

entfernen möchten, und während

for (UIView *view in [self.view subviews]) { 
    if (view.tag == someValue) { 
      [view removeFromSuperview]; 
    } 
} 
+0

Danke präsentiere. Lief wie am Schnürchen. – HasenBaumeister

+0

@hasenbaumeister: Immer Kumpel willkommen :) –

Verwandte Themen