2009-11-23 4 views
0

App Description: J'ai un UIWebView et une barre d'outils au-dessous. Un bouton sur la barre d'outils devrait faire apparaître une vue de table modale, mais ce n'est pas le cas.iPhone ModalViewController pour la vue Table ouverte par bouton?

La barre d'outils comporte quatre boutons:

précédent: Goes to site précédent

suivant: Permet d'accéder au site suivant (ces deux étant différente de la valeur par défaut des méthodes goForward et GoBack)

Menu: Afficher un modalViewController avec un TableView de tous les sites disponibles (les sites seront limités à un tableau de liens de sites que les boutons suivant et précédent parcourront)

Rafraîchir: Actualise le site actuel

application a quatre principales classes/fichiers

WebAppDelegate.h .m

ListViewController.h et .m (qui a le Tableau dans son xib et le code pour remplir la table le .m/le contrôleur modal vue)

Il n'y a qu'un seul avertissement et aucune erreur.

Attention: 'WebAppDelegate' ne peut pas repsond à '-presentModalViewController: animation:'

Quand je lance le programme, tout va bien jusqu'à ce que je clique sur le bouton Menu. Je reçois cette erreur d'exécution

[WebAppDelegate presentModalViewController:animated:]: unrecognized selector sent to instance 

est sous le code pour le bouton Menu, qui est actuellement en WebAppDelegate.m

-(IBAction)menu:(id)sender { 
ListViewController *aListView=[[ListViewController alloc] initWithNibName:@"ListViewController" bundle:[NSBundle mainBundle]]; 
[self setListController:aListView]; 
aListView.modalTransitionStyle=UIModalTransitionStyleCoverVertical; 
[self presentModalViewController:aListView animated:YES]; 
[aListView release]; 
} 

Toutes les idées sur ce qui cause l'application de tomber en panne et pourquoi la l'affichage de la table modale ne s'affiche pas?

Répondre

4

Le message d'erreur vous indique exactement ce que votre problème est - vous envoyez un sélecteur à un objet qui ne répond pas à ce sélecteur.

[self presentModalViewController:aListView animated:YES]; 

self dans ce cas dans votre instance de WebAppDelegate, ce qui est probablement une sous-classe de NSObject, non UIViewController. presentModalViewController:animated: est une méthode sur UIViewController, donc vous devez envoyer ce message à tout ce contrôleur vue actuellement affichée (ou peut-être un contrôleur de navigation) si vous voulez présenter un autre contrôleur de vue de façon modale.

Ne pas ignorer les avertissements du compilateur - l'un avertissement vous est susceptible de vous dire que ...

'WebAppDelegate' may not respond to '-presentModalViewController:animated:' 

... qui, encore une fois, est exactement votre problème.

1
[self.navigationController presentModalViewController:aListView animated:YES]; 
+1

Vous ne savez pas où il insinue qu'il a un contrôleur de navigation.Si quelque chose, je serais prêt à parier qu'il n'en a pas, et cela n'aide pas à donner une réponse qui pourrait être source de confusion parce qu'elle n'est pas entièrement expliquée. –

+0

Cela a fonctionné, et a maintenant une nouvelle erreur d'exécution (pas d'autres erreurs ou avertissements de compilation): "Terminaison de l'application due à une exception non interceptée 'NSInternalInconsistencyException', raison: '- [UITableViewController loadView] a chargé la plume" ListViewController "mais didn' t obtenir un UITableView. '" Quelque chose ne va pas dans le code Table View, mais il progresse au moins. – LoganFrederick

+0

SBrocket est juste que je n'ai pas de contrôleur de navigation. J'ai utilisé self.listController, qui pourrait encore être la mauvaise approche. – LoganFrederick

Questions connexes