segmentControl faire defiler les pages d'un detailsView
paddev
Membre
Bonjour a tous,
J'ai une tableView dans laquelle sont classés des artistes par ordre alphabétique, quand j'appuie sur une cellule, une page s'affiche pour montrer les details de l'artistes. (avec pushviewcontroller).
J'aimerais dnas la page details mettre 2 boutons (up et down) pour pouvoir faire defiler les pages mais je ne sais pas trop comment faire.
Voici le code de ma page detail, je ne sais pas comment recuperer l'index dans ma fonction segmentAction.
Merci pour votre aide.
J'ai une tableView dans laquelle sont classés des artistes par ordre alphabétique, quand j'appuie sur une cellule, une page s'affiche pour montrer les details de l'artistes. (avec pushviewcontroller).
J'aimerais dnas la page details mettre 2 boutons (up et down) pour pouvoir faire defiler les pages mais je ne sais pas trop comment faire.
Voici le code de ma page detail, je ne sais pas comment recuperer l'index dans ma fonction segmentAction.
Merci pour votre aide.
<br />#import "DetailsArtistes.h"<br />#import "UIImage+Resize.h"<br />@implementation DetailsArtistes<br />@synthesize DetailsTitre,viewHaut,music,DetailsImage,viewMilieu,viewBas,bouton1,bouton2,bouton3,vue,table,segControl,items,currentRow;<br />- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil<br />{<br /> self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];<br /> if (self) {<br /> // Custom initialization<br /> }<br /> return self;<br />}<br /><br />- (void)didReceiveMemoryWarning<br />{<br /> // Releases the view if it doesn't have a superview.<br /> [super didReceiveMemoryWarning];<br /> <br /> // Release any cached data, images, etc that aren't in use.<br />}<br /><br />#pragma mark - View lifecycle<br /><br />- (void)viewDidLoad<br />{<br /> // "Segmented" control to the right<br /> UISegmentedControl *segmentedControl = [[UISegmentedControl alloc] initWithItems:<br /> [NSArray arrayWithObjects:<br /> [UIImage imageNamed:@"up.png"],<br /> [UIImage imageNamed:@"down.png"],<br /> nil]];<br /> [segmentedControl addTarget:self action:@selector(segmentAction:) forControlEvents:UIControlEventValueChanged];<br /> segmentedControl.frame = CGRectMake(0, 0, 90, 30.0);<br /> segmentedControl.segmentedControlStyle = UISegmentedControlStyleBar;<br /> segmentedControl.momentary = YES;<br /> <br /> UIBarButtonItem *segmentBarItem = [[UIBarButtonItem alloc] initWithCustomView:segmentedControl];<br /><br /> <br /> self.navigationItem.rightBarButtonItem = segmentBarItem;<br /> self.segControl = segmentedControl;<br /><br /> <br /> <br /> self.vue=[[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 460)];<br /> self.vue.backgroundColor =[UIColor blackColor];<br /> [self.view addSubview:self.vue];<br /> <br /> viewHaut = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 320, 100)];<br /> viewHaut.backgroundColor = [UIColor colorWithRed:(30.0/255.0) green:(30.0/255.0) blue:(30.0/255.0) alpha:1.0];<br /> [vue addSubview:viewHaut];<br /> <br /> DetailsTitre = [[UILabel alloc]initWithFrame:CGRectMake(120, 20, 210, 20)];<br /> DetailsTitre.text=music.musicTitle;<br /> DetailsTitre.backgroundColor = [UIColor clearColor];<br /> DetailsTitre.textColor = [UIColor whiteColor];<br /> DetailsTitre.font=[UIFont boldSystemFontOfSize:16];<br /> [viewHaut addSubview:DetailsTitre];<br /> <br /> DetailsImage=[[UIImageView alloc] initWithFrame:CGRectMake(10, 10, 80, 80)];<br /><br /> <br /> <br /> DetailsImage.image=[[UIImage imageNamed:[music musicPhoto]] thumbnailImage:80 transparentBorder:0<br /> cornerRadius:5<br /> interpolationQuality:90];<br /> [DetailsImage.layer setBorderColor: [[UIColor whiteColor] CGColor]]; [DetailsImage.layer setBorderWidth: 2.0];<br />[viewHaut addSubview:DetailsImage];<br /> <br /> <br /> <br /> viewBas = [[UITextView alloc]initWithFrame:CGRectMake(10, 150, 300, 210)];<br /> viewBas.backgroundColor = [UIColor blackColor];<br /> viewBas.textColor=[UIColor whiteColor];<br /> viewBas.editable = NO;<br /> viewBas.font =[UIFont fontWithName:@"Arial" size:16];<br /> viewBas.autoresizesSubviews=YES;<br /> viewBas.autoresizingMask=(UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth);<br /> viewBas.text=music.musicDescription;<br /> [vue addSubview:viewBas];<br /> <br /> <br /> [super viewDidLoad];<br /> // Do any additional setup after loading the view from its nib.<br />}<br /><br />- (IBAction)segmentAction:(id)sender<br />{<br /> //[color=red][b]Que mettre ici?[/b][/color]<br /> }<br /><br />}<br /><br /><br /> <br /> <br /><br />- (void)viewDidUnload<br />{<br /> [super viewDidUnload];<br /> // Release any retained subviews of the main view.<br /> // e.g. self.myOutlet = nil;<br />}<br /><br />- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation<br />{<br /> // Return YES for supported orientations<br /> return (interfaceOrientation == UIInterfaceOrientationPortrait);<br />}<br /><br />@end<br />
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
ce que tu peux faire pour ton problème c'est de passer à ton controller "DetailsArtistes" l'index de l'objet "Music" que tu lui passes, ainsi qu'un lien vers ton controller courant (celui qui a la tableView).
Ainsi quand l'utilisateur appui sur le bouton up il te suffit de demander à ton controller la Music à l'index i-1, et ensuite tu remet à jour ton controller DetailsArtistes.
Je voudrais faire le changement de page avec: [UIView setAnimationTransition:UIViewAnimationTransitionCurlUp ...
toujours pas résolu le probleme, un peu d'aide serait la bienvenue..
http://ressources.mediabox.fr/tutoriaux/apple/protocol
Je pense que ça devrait t'aider
En fait mon probleme est simple , j'ai une tableview et une vue de details.
je voudrais dans la vue de details pouvoir faire defiler les pages grace a un segmentControl mais je n'arrive pas a recuperer l'index courant de chaque page.
Bref je galere...
Mais je n'ai peut-être pas bien cerné ton problème
je vais essayer mais je n'arrive pas a trouver de tuto ou d'exemple sur le net .
si quelqu'un a un lien ou a deja fait ce genre de manip..
Personnellement je ferais un truc comme ça:
Nommons A le viewController qui contient ta tableView et B le viewController qui affiche les détails.
Il faut que A respecte ce protocol, c'est à dire qu'il implémente toutes ces méthodes.
De plus c'est A qui va gérer l'index courant, qui sera incrémenté ou décrémenté par l'appel des méthodes displayNext et displayPrevious.
et quand, dans l'écran A, l'utilisateur appui sur une cellule, tu garde l'index en mémoire et tu affiches un viewController B:
et dans le viewWillAppear de B tu vas tout simplement récupérer la music depuis ton delegate et te mettre à jour et mettre Enabled ou non les boutons suivant et précédent suivant les valeurs retournées par les méthodes canDisplayNext et canDisplayPrevious du delegate.
Enfin dans B, si l'utilisateur appui sur le bouton suivant, tu fais:
Je ne sais pas si c'est très clair, hésite pas si t'as des questions.
(Ce code est fait a l'arrache, mais c'est pour illustrer un peu comment on peut faire).
Comment puis je recharger une vue dans ce cas car je pense que le probleme vient de la.
merci