2009-09-27 11 views
0

Si quelqu'un pouvait m'aider avec ce qui suit, ce serait génial!Comment incrémenter une ligne de table sélectionnée sur l'iPhone

Voici donc ce que j'essaie de faire. Mon application est essentiellement un lecteur RSS. Les rubriques des entrées rss sont affichées dans une vue tabulaire. En appuyant sur une entrée, vous ouvrez une vue Web qui affiche toute l'histoire. Pour cette vue web, j'ai ajouté une barre d'outils avec des flèches haut et bas pour que l'utilisateur puisse passer à l'histoire suivante/précédente sans quitter la vue web et devoir taper une autre entrée dans la table. Mon problème est que je n'ai aucune idée de comment archieve ceci. Peut-être que cela est lié à la structure de mon application. Ma conjecture est que je dois incrémenter la ligne sélectionnée en appuyant sur le bouton. Comme je l'ai dit, peut-être le code est un peu compliqué, j'ai donc posté le projet entier ici: http://www.schimanke.com/flo.zip Ce serait génial si quelqu'un pouvait jeter un coup d'œil et me dire quoi faire.

Répondre

0

Ce dont vous avez besoin est de savoir quelle ligne est actuellement sélectionnée sur votre modèle. Puisque vous avez une référence au modèle de votre WebView, c'est facile:

int row = [mainModel.blogEntries indexOfObject:mainModel.selectedBlogEntry]; 

Donc vous avez besoin après cela est de montrer l'entrée suivante (ou précédente). Basé sur votre code, il va comme ceci:

- (void) showNextPrevEntry:(int)increment usingTheOldController:(BlogEntryController *)controller { 

    int row = [mainModel.blogEntries indexOfObject:mainModel.selectedBlogEntry]; 
    if (row+increment<[mainModel.blogEntries count] && row+increment>=0) { 
     mainModel.selectedBlogEntry = [ mainModel.blogEntries objectAtIndex:row+increment]; 
     controller.mainModel = mainModel; 
     [controller viewDidLoad]; 
    } 

} 

Je ne pense pas qu'il est sain d'appeler viewDidLoad. Peut-être avez-vous besoin d'une autre méthode juste pour mettre à jour la vue chargée actuelle et l'appeler depuis votre viewDidLoad. Aussi, je ne sais pas pourquoi vous utilisez des notifications pour gérer les pressions sur les boutons de la barre d'outils, mais cela fonctionne. :)