Domanda

Vorrei replicare il comportamento dell'app musicale dell'iPhone. Quando stai suonando un album in quell'app e tocchi il pulsante in alto a destra, la copertina dell'album si sposta per mostrare un UITableView di brani dietro di esso.

È possibile raggiungere questo obiettivo con un'usanza UIStoryboardSegue?

O è il modo migliore solo per capovolgere tra due viste che usano lo stesso controller?

È stato utile?

Soluzione

Probabilmente è più semplice capovolgere tra due viste dello stesso controller di visualizzazione, ad esempio

- (IBAction)showTracksView
{
    [UIView transitionWithView:self.view 
                  duration:1.0 
                   options:UIViewAnimationOptionTransitionFlipFromLeft 
                animations:^{ tracksView.hidden = NO; } 
                completion:^(BOOL finished){ self.navigationItem.title = @"Tracks"; }];
}

- (IBAction)hideTracksView
{
    [UIView transitionWithView:self.view 
                  duration:1.0 
                   options:UIViewAnimationOptionTransitionFlipFromLeft 
                animations:^{ tracksView.hidden = YES; } 
                completion:^(BOOL finished){ self.navigationItem.title = @"Album cover"; }];
}

Dove TrackSview è la tua UableView delle tracce.

Altri suggerimenti

Ho avuto questa sfida e l'ho risolta usando un seguito personalizzato per presentare il controller di visualizzazione. Basta creare una nuova classe basata su UistoryBoardSegue.

Ecco il mio seguito personalizzato

.h file:

#import <UIKit/UIKit.h>

@interface BRTrackNotesSegue : UIStoryboardSegue

@end

.m File

@implementation BRTrackNotesSegue

- (void) perform {
    UIViewController *src = (UIViewController *) self.sourceViewController;
    UIViewController *dst = (UIViewController *) self.destinationViewController;
    [UIView transitionWithView:src.navigationController.view duration:0.50
                       options:UIViewAnimationOptionTransitionFlipFromLeft
                    animations:^{
                        [src.navigationController pushViewController:dst animated:NO];
                    }
                    completion:NULL];
}

@end

Nel Builder Interface Seleziona il Segue e imposta la classe Segue sul NAM del tuo seguito personalizzato.

Il Controller di Second View contiene quanto segue per licenziare con la stessa animazione:

- (IBAction)done:(id)sender {


    [UIView transitionWithView:self.navigationController.view
                      duration:0.50
                       options:UIViewAnimationOptionTransitionFlipFromLeft
                    animations:nil
                    completion:nil];
    [self.navigationController popViewControllerAnimated:NO];

}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top