problema concettuale o tecnica con programmazione Cocoa

voti
2

Mi trovo in bisogno di accesso a un viewcontroller dal suo punto di vista.

Ecco il metodo

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

}

Fondamentalmente, sto cercando di scrivere un metodo interruttore vista generico che viene chiamato dal controller principale per scambiare subviewcontorllers viste dalla vista rootcontrollers.

Io passo in un subviewcontroller e sono in grado di rimuovere la visualizzazione secondaria corrente. Ma per fare una corretta animazione vista commutazione devo accesso al controller vista vista corrente. È questo l'approccio sbagliato e può essere fatto?

È pubblicato 02/03/2009 alle 00:57
fonte dall'utente
In altre lingue...                            


3 risposte

voti
1

Ho aggiunto un membro al rootcontroller che trattenere il regolatore di corrente vista secondario (CurrentController) e si riferisce ad esso quando uno scambio controllore avviene

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

}
Risposto il 02/03/2009 a 02:21
fonte dall'utente

voti
0

Il changeView()metodo appartiene alla viewcontroller. Si risolverebbe si problema di avere la vista sapere circa la sua unità di controllo (che non dovrebbe) e ha più senso.

Anche se non si sta facendo qualcosa di fantasia in changeView()che non può essere fatto utilizzando i metodi in un UIViewControlleroggetto allora si dovrebbe solo usarlo, invece, se é necessario implementare il proprio metodo di visualizzazione di commutazione, allora è possibile estendere UIViewController invece di implemtning parte del vista controlelr nella vista.

i miei 2 centesimi :)

Risposto il 02/03/2009 a 01:16
fonte dall'utente

voti
-2

Credo che il vostro approccio è sbagliato. Si dovrebbe guardare in UINavigationController credo.

Risposto il 02/03/2009 a 01:09
fonte dall'utente

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