2011-12-18 24 views
9

Mam dwa widoki, widok A i widokB. Ładuję viewB na wierzchu viewA zWidok usuwania iOS

[self.view addSubview: viewB.view]; 

Nie chcę usunąć viewB, ale nie wiem jak to zrobić. Wypróbowałem:

[self.view removeFromSuperview]; 

ale to nie działa. Jak mogę to zrobić?

Odpowiedz

19

Zadzwoń pod -removeFromSuperview pod viewB.view.

+0

próbowałem, awarie app z tego: '- [viewB performSelector: withObject: withObject:]: komunikat wysłany do dealokowane przykład 0xf568d40' – McDermott

+0

można dodawać więcej kodzie trudno? wiesz, co jest g błędne, bez większego kontekstu. – Sean

+0

Dowiedziałem się, że krach nie był z tym związany. Teraz działa idealnie. – McDermott

7

Aby usunąć widok viewB z jego widoku, musisz wywołać removeFromSuperview w tym widoku.

[viewB.view removeFromSuperview]; 

Od UIView class reference.

removeFromSuperview 

odłącza odbiornik od jej SuperView a jego okna i usuwa go z łańcucha reagował.

3

Jesteś na dobrej drodze przy użyciu removeFromSuperView. Ale musisz wysłać wiadomość do widoku, który chcesz usunąć. Podobnie jak Till przykład

[viewB.view removeFromSuperview]; 

Jednak nie może mieć uchwyt viewB do czasu chcesz go usunąć, jeśli nie są używane właściwości i metody syntezy. Korzystałbym z @property i @synthesize. Więc można użyć:

[self.viewB.view removeFromSuperview]; 

Innym sposobem jest użycie w tym: (zakładając, że viewB.view to ostatni widok został dodany do viewA.view

[[self.view.subviews objectAtIndex:(self.view.subviews.count - 1)]removeFromSuperview]; 

Można uzyskać listę wszystkich subviews Twojego viewA przez:

NSLog(@"subviews of viewA.view: %@",self.view.subviews); 
+1

FYI można nazwać 'lastObject', aby uzyskać ostatni obiekt tablicy (zamiast' self.view.subviews.count - 1) ' – Rog

+0

Nauczyłem się, jak idę. Świetne informacje! – user523234

+0

Dodaję wiele rzeczy programowo, więc 'removeFromSuperview' jest moim wyborem. – McDermott

Powiązane problemy