UITableView pushViewController Sur la Sélection d'une Ligne
Je suis en train de construire une application iPhone avec un UITableView. Sur la sélection d'une ligne, j'aimerais une UIWebView être poussé dans le chargement d'une URL spécifique.
J'ai actuellement:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
NSDictionary * story = [stories objectAtIndex:[indexPath row]];
NSString * storyLink = [NSString stringWithFormat:[story objectForKey:@"link"]];
[[self navigationController] pushViewController:[[FirstViewController alloc] initWithNibName:@"FirstView" bundle:[NSBundle mainBundle]] animated:YES];
}
Comment puis-je obtenir le nouveau point de vue qui se glisse dans pour contenir une UIWebView et ensuite chargez histoire de lien, via:
loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:storyLink]]
Merci d'avance,
Benji
OriginalL'auteur Benji Barash | 2009-07-24
Vous devez vous connecter pour publier un commentaire.
Comme d'autres l'ont dit, l'idée générale est d'avoir une propriété sur FirstViewController qui stocke l'URL il doit charger, puis de charger l'URL dans la UIWebView lorsque la vue s'affiche.
Voici un exemple de ce à quoi il pourrait ressembler, en commençant par la tête:
Maintenant pour la mise en œuvre:
Alors maintenant, tout ce que vous devez faire dans le contrôleur de la vue précédente est cette histoire d'URL, pour le transmettre à FirstViewController et de le pousser à.
Et c'est à ce sujet. Quelques autres points:
Je suppose que le "lien" de la valeur dans votre dictionnaire est déjà une chaîne - la construction d'une toute nouvelle chaîne dans votre exemple d'origine a été inutile si c'est le cas. Comme vous pouvez le voir dans mon exemple, nous pouvons utiliser cette chaîne directement pour créer le
NSURL
instance.Dans votre code d'origine, lorsque vous alloc/init votre FirstViewController, vous passez directement en
pushViewController
. Cela crée une fuite de mémoire, car une foisUINavigationController
est fait avec elle (après qu'il a sauté hors de la pile de navigation), c'est de conserver le comte sera toujours 1. Au moins, vous devriez appelerautorelease
mais le plus efficace de chose à faire ici est tout simplement alloc/init, le stocker dans une variable temp, puis d'appelerrelease
tout de suite après, nous avons poussé. Cela garantit qu'une fois qu'il est sauté hors de la pile de navigation, il sera libéré.Je voudrais faire le
loadRequest
pendantviewDidLoad
plutôt queviewDidAppear
-- dans le cas contraire, vous pourrez garder le rechargement de la page, si par exemple, vous avez un onglet contrôleur qui peut passer de la vue et de sortir.Pour l'apprentissage, j'ai Pu pls obtenir un exemple téléchargeable sur l'app à voir dans XCode pour le ci-dessus?
OriginalL'auteur Luke Redpath
Tout d'abord, avez-vous une plume nommé "FirstView" dans votre projet?
Deuxièmement, la façon dont je l'ai fait habituellement c'est pour instancier le ViewController et de passer les paramètres avant de le pousser sur la valeur liquidative de la pile.
OriginalL'auteur kubi
Pour obtenir une uiwebview simplement créer avec Interface Builder ou le définir comme une variable d'instance dans le viewcontroller que vous chargez. Après que l'utilisation de nsurlrequest travaillera
OriginalL'auteur ennuikiller
La meilleure façon serait de créer une nouvelle vue de contrôleur de classe qui contient une webview. Ce point de vue contrôleur aurait un
url
de la propriété, qui est transmis sur le web afficher lorsque dansviewDidLoad
.Lire L'Objective-C 2.0 Langage de Programmation.
OriginalL'auteur Daniel Dickison
Pour cela, vous pouvez faire un IBOutlet webview dans FirstViewController puis envoyez le lien de l'url par le biais de la réalisation d'un objet de FirstViewController
objet.urllink = storyUrl;
ensuite, vous pouvez ouvrir le lien dans UIWebView.....
OriginalL'auteur Jyoti Kumari