remove alle subviews?
Ik heb een applicatie ontwikkeld waar ik dmv knoppen verder kom door de menu's. elk menu is een view met een paar knoppen.
Elke nieuwe keuze die men maakt in het menu laad dus het bijbehorende subview weer. Stel nou dat ik bij de 5e subview ben, en ik wil een pagina terug dan is dat niet zo lastig. Dan kan ik gewoon zichzelf laten verwijderen en zie je dus de subview eronder (de vorige pagina dus). Echter, ik wil ook een knop om terug naar het begin te gaan. Ik kan echter geen andere views weghalen dan de eigen en uberhaupt om alle mogelijke views te gaan includen en linken e.d. is wel erg overdreven. Is er iets van een mogelijkeid om alle subviews in een keer weg te halen? Ik kan hier echt nergens een oplossing voor vinden. Hulp graag :) |
kijk eens naar de methods popToRootViewControllerAnimated: of popToViewController:animated: van UINavigationController
|
Ik heb beide geprobeerd maar zonder succes.
Ik heb nu ook nog een begin 'laad' view gemaakt die de originele 1e view inlaad via addSubview. ik dacht dat ik misschien via die loader-view alle subviews hiervan kon verwijderen met een functie, maar ook dat heeft tot niks geleid. Kan iemand me aub helpen? kom er nog steeds niet uit en zoek/probeer me suf! :( |
iets al dit misschien?
Code:
for (UIView *view in self.subviews) { |
Citaat:
|
Andere optie, is er missch een makkelijkere manier om een addsubview te doen?
Voorbeeld wat ik nu doe:
|
Ik heb ongeveer hetzelfde probleem als jij gehad en het probleem zit 'm in de hierarchie ... in plaats van ze toe te voegen als subviews kun je ze het best op de stack pushen en vervolgens poppen. Dan kun je namelijk wel popToViewController e.d. gebruiken.
Sowieso zou ik dit gedeelte van de navigationController in ieder geval even doorlezen. iPhone Dev Center: UINavigationController Class Reference Het lijkt me veel beter dan constant subview bovenop subview neer te zetten. |
Citaat:
Die kan ik dan in alle views aanroepen met [[self superview] functienaam]; Je krijgt danwel een warning (omdat hij in de compiler nog niet weet wat de superview is en of die wel die functie heeft), maar het werkt prima zonder dat je in elke subview een terugkoppeling moet maken naar de eerste view met die functie :) Ik zou het waarsch. via de viewcontroller moeten doen voor de meest nette manier, maar dit werkt wel goed. Ik heb ook een functie gemaakt om dus al zijn subviews weg te halen (met een stukje code wat iemand hierboven gaf, met een for loop). Bedankt allen, en missch. heeft iemand in de toekomst nog wat aan deze info. Alle views bovenop elkaar 'stacken' is niet zo'n goed idee dus. ;) |
Citaat:
als je dan toch een andere manier neemt, moet je het natuurlijk wel netjes doen. Je compiler geeft een warning op je superview omdat je method niet zichtbaar is. Die moet je dus wel netjes in je header zetten he. Beter is nog om een abstracte class te maken (of een protocol) en al je views daarvan te laten overerven (of het protocol te implementeren). ben je van de compiler warning af, EN je kunt met code testen of het uberhaupt wel een class is van het goede type. |
Alle tijden zijn GMT +2. Het is nu 08:03. |