2010-12-13 46 views
0

Je rencontre un problème avec mon application s'écraser. Le contrôleur racine principal est un contrôleur d'onglet. à l'intérieur du contrôleur de tabulation j'ai 4 boutons qui ont un contrôleur de nav connecté à eux. à l'intérieur du contrôleur de navigation, j'ai un contrôleur de table avec quelques cellules. lorsque vous cliquez sur une cellule, vous accédez à un contrôleur de vue. maintenant quand je clique sur la cellule et il me prend au contrôleur de vue. quand je clique sur la flèche de retour sur le contrôleur de navigation, cela me ramène à la vue de la table, ce qui est super, mais quand je clique sur une nouvelle cellule, l'application plante. chaque fois que je clique sur une cellule, revenir en arrière et cliquer sur une autre cellule, l'application se bloque. Qu'est-ce que je fais mal? Je pense que je me soucie aussi de toutes mes sorties. pas sûr cependant.ios app plante

Il y a une erreur lors de l'exécution du programme. Il se lit comme suit:

livre Nav Controller (médical Comment est) a ce bien Nom NIB » mis à « BookTableViewController.nib », mais ce contrôleur de vue ne vise pas à avoir son point de vue établi de cette manière

.

Je suis aussi obtenir setText est dépréciée sur ce code:

cell.text = [breakdownArray objectAtIndex:row]; 

Que dois-je changer pour

aussi mon didSelectRowAtIndexPa? Code e est:

NSInteger row = [indexPath row]; 
if (self.bookDetailViewController == nil); { 
    BookDetailViewController *aBookDetail = [[BookDetailViewController alloc] initWithNibName:@"BookDetailView" bundle:nil]; 
    self.bookDetailViewController = aBookDetail; 

    [aBookDetail release]; 

} 

bookDetailViewController.title = [NSString stringWithFormat:@"%Breakdown" , [breakdownArray objectAtIndex:row]]; 

Surviving2012AppDelegate *delegate = [[UIApplication sharedApplication] delegate]; 
[delegate.breakdownNavController pushViewController:bookDetailViewController animated:YES]; 

[delegate release]; 

} 
+2

Vous n'avez rien mentionné sur votre plate-forme/OS/framework/langage de programmation. S'il vous plaît ajouter plus de détails. Vous pouvez améliorer vos compétences en matière de questions en suivant ce guide: tinyurl.com/so-hints –

+2

Veuillez mettre en forme le code, mettre les balises appropriées et un titre de question approprié. –

+0

Pour vous débarrasser de l'avertissement de méthode obsolète, utilisez cell.textLabel.text au lieu de cell.text. Aussi, n'appelez PAS [release de délégué] – ughoavgfhw

Répondre

0
cell.text = [breakdownArray objectAtIndex:row]; 

devrait être:

cell.textLabel.text = [breakdownArray objectAtIndex:row]; 

bookDetailViewController.title = [NSString stringWithFormat:@"%Breakdown" , [breakdownArray objectAtIndex:row]]; 

devrait être:

bookDetailViewController.title = [NSString stringWithFormat:@"%@", [breakdownArray objectAtIndex:row]]; 

Si vous appelez cela de l'un des viewControllers dans le tabBarController, puis ceci:

Surviving2012AppDelegate *delegate = [[UIApplication sharedApplication] delegate]; 
[delegate.breakdownNavController pushViewController:bookDetailViewController animated:YES]; 
[delegate release]; 

devrait être:

[self.navigationController pushViewController:bookDetailViewController animated:YES]; 

Et si elle est encore planter après cela, vous aurez besoin de poster comment vous définissez:

bookDetailViewController dans votre fichier .h et le contenu de votre Méthodes viewWillAppear et viewDidLoad.

0

Comme pour la méthode désapprouvée:

changement à:

cell.textlabe.text = [breakdownArray objectAtIndex:row]; 

Et je n'obtenir le coup de ceci:

Surviving2012AppDelegate *delegate = [[UIApplication sharedApplication] delegate]; 
[delegate.breakdownNavController pushViewController:bookDetailViewController animated:YES]; 

[delegate release]; 

Vous avez dit que vous avez un NavigationController dans tous les languette? Alors pourquoi ne l'utilisez-vous pas?

[self.navigationController pushViewController:bookDetailViewController 


animated:YES]; 
+0

J'utilise le contrôleur de navigation. J'ai une table à l'intérieur du contrôleur de navigation. je clique sur une cellule. ça m'amène à une vue de table. Puis j'ai appuyé sur la navigation et quand je clique sur une nouvelle cellule. l'application se bloque. – misterbrownstone

+0

Y Je disais juste, que je ne pense pas que vous deviez créer un navController supplémentaire, parce que vous pourriez déjà en avoir un dans votre classe. Mais je ne connais pas votre code et si les choses fonctionnent de cette façon, mieux vaut ne pas le changer ("ne jamais changer un système en cours d'exécution" ^^). Mais jetez un oeil à mon commentaire ci-dessus et ajoutez la autorelease pour empêcher les fuites de mémoire – Amandir

0

iOS d'Apple Reference Library - disponible là dans Xcode sous Aide-> Documentation Developer - établit très clairement ce qu'il faut remplacer le dépréciée .text propriété avec: .textLabel and .detailTextLabel.

0

n'appelez certainement pas la version sur le délégué. vous appelez uniquement la version sur un objet lorsque vous avez utilisé une méthode qui contient: alloc/init, copier, nouveau ou conserver. Dans le cas contraire, vous libérerez probablement une instance autoreleased, ce qui provoquera un crash.

corrigez cela, si cela arrive encore, postez vos résultats, et nous y reviendrons.

+0

yup il a cessé de s'écraser !! Merci! mais cela causera-t-il comme une fuite de mémoire ou quelque chose plus tard tout en utilisant l'application? – misterbrownstone

+0

vous pouvez simplement utiliser un appel autorelease en changeant le code à: Surviving2012AppDelegate * delegate = [[[UIApplication sharedApplication] délégué] autorelease]; Par ce votre programme gère la version. – Amandir

+0

il ne causera pas de fuite parce que c'est un objet autoreleased. si elle avait une nouvelle copie ou alloc/init dans le titre, alors vous prendrez possession de l'objet et devrez vous soucier de la gestion de la mémoire. Si vous ne la possédez pas, alors ne la libérez pas. Tout ce que vous devez savoir sur la gestion de la mémoire peut être trouvé ici: http: //interfacelab.com/objective-c-memory-management-for-lazy-people/ – MCannon