koncepční nebo technický problém s programováním kakao

hlasů
2

Ocitám v případě potřeby přístup k viewcontroller ze svého pohledu.

Zde je metoda

-(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];

}

V podstatě se snažím psát obecný pohled způsob přepínač, který se nazývá ovladačem kořenové vyměnit subviewcontorllers výhled z pohledu rootcontrollers.

I projít v subviewcontroller a jsem schopen odstranit stávající subview. Aby však bylo možné učinit správné zobrazení spínacího animaci i potřebují přístup k aktuálním ovladačem zobrazení zobrazení. Je to špatný přístup a může se to provést?

Položena 02/03/2009 v 00:57
zdroj uživatelem
V jiných jazycích...                            


3 odpovědí

hlasů
1

Přidal jsem člena do rootcontroller, které drží na řadiči aktuální dílčí pohled (currentController) a odkazuje na to, když je swap kontrolér provádí

-(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;

}
Odpovězeno 02/03/2009 v 02:21
zdroj uživatelem

hlasů
0

changeView()Metoda patří v viewcontroller. To by vám vyřešit problém, který má názor o tom věděli to regulátor (který by neměl) a to dává větší smysl.

Také pokud děláte něco vymyšleného ve changeView()které nelze provést s použitím metod v UIViewControllerobjektu, pak byste měli jen používat místo, pokud je pořeba implementovat vlastní metodu view spínací pak si můžete rozšířit UIViewController místo implemtning část z pohled controlelr podle vašeho názoru.

moje 2 centy :)

Odpovězeno 02/03/2009 v 01:16
zdroj uživatelem

hlasů
-2

Věřím, že váš přístup je špatný. Měli byste se podívat do UINavigationController věřím.

Odpovězeno 02/03/2009 v 01:09
zdroj uživatelem

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