conceptuele of technisch probleem met cocoa programmering

stemmen
2

Ik merk dat ik behoefte aan toegang tot een ViewController van haar standpunt.

Hier is de methode

-(void)changePageView:(UIViewController*)newviewcont withtransitiontype:(int)t andtransitionspeed:(int)s
{
    //Remove whatever view is currently loaded at index 0, this index is only to be used by page views
    UIView *oldview = [self.view.subviews objectAtIndex:0];

    [UIView beginAnimations:@View Flip context:nil];
    [UIView setAnimationDuration:s];
    [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
    [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:self.view cache:YES];
    [newviewcont viewWillAppear:YES];
    //[oldview viewWillDisappear:YES];
    [oldview removeFromSuperview];
    [self.view insertSubview:newviewcont.view atIndex:0];
    //[oldview viewDidDisappear:YES];
    [newviewcont viewDidAppear:YES];

}

Kortom, probeer ik om een ​​generieke schermschakelaar methode die wordt aangeroepen door de wortel controller om te wisselen van subviewcontorllers uitzicht vanaf de rootcontrollers zicht te schrijven.

Ik pas in een subviewcontroller en ben in staat om de huidige subview verwijderen. Maar om een ​​goede schakelfunctie animatie heb ik nodig toegang tot de huidige inzichten view controller. Is dit de verkeerde aanpak en kan het worden gedaan?

De vraag is gesteld op 02/03/2009 om 00:57
bron van user
In andere talen...                            


3 antwoorden

stemmen
1

Ik voegde lid aan de rootcontroller dat vasthouden actuele sub View Controller (currentController) en verwijst naar wanneer een controller swap gebeurt

-(void)changePageView:(UIViewController*)newviewcont withtransitiontype:(int)t andtransitionspeed:(int)s
{


    [UIView beginAnimations:@"View Flip" context:nil];
    [UIView setAnimationDuration:s];
    [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
    [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:self.view cache:YES];
    [newviewcont viewWillAppear:YES];
    [self.currentController viewWillDisappear:YES];
    [self.currentController.view removeFromSuperview];
    [self.view insertSubview:newviewcont.view atIndex:0];
    [self.currentController viewDidDisappear:YES];
    [newviewcont viewDidAppear:YES];
    [UIView commitAnimations];


    self.currentController = newviewcont;

}
antwoordde op 02/03/2009 om 02:21
bron van user

stemmen
0

De changeView()werkwijze maakt het ViewController. Het zou u op te lossen probleem van het hebben van het uitzicht te weten over het controller (die het niet mag) en het maakt meer zin.

Ook tenzij je iets bijzonders in het doen changeView()dat niet kan worden gedaan met behulp van de methoden in een UIViewControllerobject dan moet je gewoon gebruiken in plaats daarvan, als het nodig zijn dat de uitvoering van uw eigen visie switching methode dan kun je uitbreiden UIViewController plaats van implemtning deel van de view controlelr naar uw mening.

mijn 2 cent :)

antwoordde op 02/03/2009 om 01:16
bron van user

stemmen
-2

Ik geloof dat uw aanpak is verkeerd. Je moet kijken naar UINavigationController geloof ik.

antwoordde op 02/03/2009 om 01:09
bron van user

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more