2009-08-13 4 views
1

Est-il possible de sélectionner une ligne dans un précédent UITableview. J'ai fourni des échantillons d'image pour obtenir une image plus claire de ce qui se passe exactement.Est-il possible de sélectionner une ligne dans un ** previous ** UITableview

http://img186.imageshack.us/img186/933/picture8a.png

http://img405.imageshack.us/img405/9327/picture9d.png

http://img200.imageshack.us/img200/5386/picture10thm.png

À l'écran de séance d'entraînement du matin, on peut sélectionner une ligne et derrière il va jouer un film. Si le film est joué, vous pouvez appuyer sur le second bouton et il vous amènera à la table finale. Si vous appuyez sur le bouton Back, vous revenez simplement à l'écran précédent.

Maintenant, voici où se situe mon problème. Si je suis dans mon dernier écran après avoir appuyé sur la deuxième touche et que j'appuie sur le bouton arrière, ce serait bien si elle pouvait lire la vidéo précédente (en d'autres termes, la vidéo connectée à la cellule précédemment sélectionnée)

Donc si c'est possible pour moi de créer une fonction ou une sorte d'action qui peut effectivement sélectionner la ligne précédemment sélectionnée dans le premier champ (par exemple Lunge Forward dans cet exemple). peut-être avec quelques-uns comme

previousRow = [ self.tableView indexPathForSelectedRow]; 
[self tableView:[self tableView] didSelectRowAtIndexPath:previousRow]; 

juste faire quelque chose

Même si ce n'est pas possible, je vous serais reconnaissant si quelqu'un me le faire savoir.

modifier: Voici un code derrière la cellule quand il va jouer une vidéo

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 

//Get the dictionary of the selected data source. 
NSDictionary *dictionary = [self.tableDataSource objectAtIndex:indexPath.row]; 

//check to see if video must be played 
NSString *playVids = [dictionary objectForKey:@"playVids"]; 

finalscreen = [dictionary objectForKey:@"finalScreen"]; 

if(playVids == nil) 
{ 
if(CurrentLevel != 0) 
{ 
if(finalscreen == nil) 
{ 
NSString *movies = [dictionary objectForKey:@"movieID"]; 
NSURL *movie = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:movies ofType:@"m4v"]]; 
theMovie = [[MPMoviePlayerController alloc] initWithContentURL:movie]; 
[theMovie setOrientation:UIDeviceOrientationPortrait animated:NO]; 
[theMovie setScalingMode:MPMovieScalingModeAspectFit]; 
theMovie.backgroundColor = [ UIColor whiteColor]; 
[[NSNotificationCenter defaultCenter] addObserver:self 
selector:@selector(myMovieFinishedCallback:) 
name:MPMoviePlayerPlaybackDidFinishNotification 
    object:theMovie]; 

[theMovie play]; 
[self getToolBarStuff]; 

lblTitle.text = [dictionary objectForKey:@"Title"]; 
[[[UIApplication sharedApplication]keyWindow]addSubview:toolbar2]; 
[[[UIApplication sharedApplication]keyWindow]addSubview:imageView]; 
[[UIApplication sharedApplication]keyWindow]addSubview:lblTitle]; 
} 
} 

else 

{ 
WebViewController *web = [[WebViewController alloc] initWithNibName:@"WebView" bundle:[NSBundle mainBundle]]; 
[self.navigationController pushViewController:web animated:YES]; 
[web release]; 
} 
} 
else { 
//Prepare to tableview. 
rvController = [[RootViewController alloc] initWithNibName:@"RootViewController" bundle:[NSBundle mainBundle]]; 

//Increment the Current View 
rvController.CurrentLevel += 1; 

//Set the title; 
rvController.CurrentTitle = [dictionary objectForKey:@"Title"]; 

//Push the new table view on the stack 
[self.navigationController pushViewController:rvController animated:YES]; 
rvController.tableDataSource = Children; 
[rvController release]; 

} 
} 

Je reçois mes informations/feeds d'un dictionaryfile et aussi différentes balises dans mon dictionnaire dire à mon tableview quand pour lire la vidéo et quand pas (playVids).

pour être exact J'ai un écran de démarrage qui vous amène à un deuxième écran et celui-ci vous amène à l'écran d'entraînement du matin et à partir de là, si vous cliquez sur une cellule, une vidéo (différente avec chaque cellule). Je ne peux pas utiliser le design standard d'Apple (avec le bouton de retour ci-dessus) puisque cette tâche demande spécifiquement d'utiliser leur propre design. C'est la raison pour laquelle j'ai créé mes propres onglets et boutons de retour.

Mon backbutton ressemble à ceci

-(void)back_clicked:(id)sender 
{ 
[self.navigationController popViewControllerAnimated:YES]; 

CurrentLevel--; 

switch(CurrentLevel) { 
case 0; 
[toolbar removeFromSuperView]; 
default: 
break; 
} 
} 

Donc, si je suis dans le dernier écran je pop juste que l'écran pour revenir à mon précédent (la séance d'entraînement du matin). Et ce qui doit être fait, c'est d'afficher cet écran et de lire la dernière vidéo. J'ai pensé que je pourrais faire cela en ouvrant le dernier écran, puis en sélectionnant la cellule précédemment cliquée dans la séance d'entraînement du matin.

Toute réflexion à ce sujet.

Répondre

1

Je ne suis pas sûr de comprendre exactement votre problème ici. Pouvez-vous montrer un peu plus de code? Vous avez 3 contrôleurs de vue, non? Utilisez-vous un modèle de contrôleur de navigation standard avec push/pop pour passer de l'un à l'autre? Il semble que vous ne le soyez peut-être pas puisque les boutons sont dans une disposition étrange.Si vous appuyez ensuite sur le bouton de retour, vous pouvez simplement afficher la vue 3 et revenir à la vue 2 naturellement (elle sera toujours là, donc la vidéo devrait toujours être jouable), donc je ne vois pas pourquoi vous devez gâcher avec la table en vue 1 pour le trouver et le faire ressortir. Vous devriez juste être en mesure de vous connecter à viewWillAppear et faire la même chose que lorsque vous venez de la vue 1.

Et si vous n'utilisez pas un modèle de contrôleur de navigation standard, c'est peut-être le problème. Du point de vue de l'interface utilisateur, vous devriez probablement le faire de toute façon - les gens s'attendent à un bouton de retour standard dans la barre de titre. Je suis assez sûr que votre problème est soluble de toute façon - vous pouvez toujours passer des références d'objet d'une vue à l'autre en les créant par exemple - mais je ne pense pas que vous ayez besoin de recourir à la méthode que vous avez en tête.

edit: lire le détail supplémentaire Je vois que vous utilisez en effet push/pop. Donc, vous avez une pile de vues, et quand on est sauté il découvre celui en dessous, non? Il devrait donc être possible de faire ce que vous voulez en implémentant les méthodes viewWillAppear ou viewDidAppear dans votre contrôleur. Lorsque votre dernier écran est sauté, si je comprends bien, il va découvrir la vue qui est capable de lire le film. Votre viewcontroller obtiendra les messages viewWillAppear/viewDidAppear dans ce cas - en conservant l'état et en recevant ces messages, vous pouvez ensuite implémenter la logique pour décider si vous devez ou non lire le film. Plutôt que d'appeler le didSelectRow. méthode encore une fois vous pourriez peut-être mettre le film jouer des trucs dans sa propre méthode afin que vous puissiez appeler soit viewDidAppear ou didSelectRow ...

+0

je vous remercie beaucoup pour votre réponse. En effet, j'ai plus d'un contrôleur. Cependant, ceux-ci ne s'appliquent pas vraiment ici. J'utilise une sorte de drilldowntable comme celle-ci. http://www.iphonesdkarticles.com/2009/03/drill-down-table-view-with-detail-view.html. Donc j'utilise un contrôleur pour contrôler les vues de table. Et il y a aussi un contrôleur différent pour ma superposition avec la vidéo (le titre et le bottombar). Je vais éditer ma question et ajouter du code pour être plus précis. Parce que dans cette boîte de commentaire c'est une douleur à lire je suppose;). –

0

Je ne suis pas sûr que je comprends complètement votre question soit, mais cela ressemble à un problème que je travaillait récemment. Consultez ce post sur l'utilisation de flèches haut vers le bas pour vous déplacer dans la table parente dans une vue détaillée. Mon application était basée sur le même exemple de code, donc vous devriez être capable de le faire fonctionner sans trop de problèmes.

Up/down arrows in nav bar of detail view to page through objects in parent table

+0

Il est en effet simulaire à la différence que mon bouton est dans la vue de table suivante poussé sur le précédent;) –

Questions connexes