2010-11-15 7 views
0

Presque tous les exemples que je vois sont faits avec IB mais je ne veux pas utiliser IB. Ce que je veux faire est, quand un utilisateur sélectionne une ligne dans la table un UIWebView sera poussé sur la pile et chargera cette page particulière tout en gardant la barre de tabulation et la barre de navigation. Je ne veux pas que toutes les fonctionnalités d'un navigateur soient simplement capables de faire défiler une page, car le reste de mon application contrôle la façon dont une personne peut naviguer à travers le site via des tables.Pousser UIWebView sur UIViewController

J'ai donc été capable de pousser d'autres viewcontrollers mais pousser une UIWebView avec la même méthode ne fonctionne pas.

Voici ce que j'ai jusqu'à présent ..

Ceci est le fichier Threads.h

#import "ThreadContent.h" 
#import <UIKit/UIKit.h> 


@interface Threads : UITableViewController { 
NSMutableArray *threadName; 
NSMutableArray *threadTitle; 
UIActivityIndicatorView *spinner; 
NSOperationQueue *operationQueue; 
UILabel *loadingLabel; 
NSMutableDictionary *cachedForum; 
NSMutableArray *forumID; 
NSInteger *indexPathRowNumber; 
NSMutableArray *threadID; 

ThreadContent *threadContent; 
} 

@property (nonatomic, assign) NSMutableArray *forumID; 
@property (nonatomic, assign) NSInteger *indexPathRowNumber; 

@end 

Une partie de mon dossier de Threads.m où je suis en train de pousser le UIWebView

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
NSLog(@"%i",indexPath.row);//get row number 
NSLog(@"%@", [threadID objectAtIndex:indexPath.row]);//thread id 
                //forums.whirlpool.net.au/forum-replies.cfm?t= 
                //NSString *urlString = [NSString stringWithFormat:@"forums.whirlpool.net.au/forum-replies.cfm?t=%@", [threadID objectAtIndex:indexPath.row]]; 
threadContent = [[ThreadContent alloc] init]; 
[self.navigationController pushViewController:threadContent animated:YES]; 
} 

Mes fichiers WebView .. et bien je ne sais pas comment faire ça? Je l'ai fait une sous-classe "UIWebView" mais si j'essaie de le pousser sur la pile, je reçois un plantage disant qu'il a besoin d'une sous-classe "UIViewController".

Répondre

5

UIWebView est une sous-classe de UIView et non UIViewController.

Vous devez sous-classe UIViewController (appeler par exemple WebViewController)

Et dans la méthode viewDidLoad créer un UIWebView et l'ajouter à la vue, à l'aide addSubview: Vous pouvez passer l'URL à charger dans le webView comme propriété de la WebViewController

-(void)viewDidLoad { 
    UIWebView *webView = [[UIWebView alloc] initWithFrame:self.view.bounds]; 
    [self.view addSubView:webView]; 
    [webView loadRequest:[NSURLRequest requestWithURL:self.urlToLoad]]; 
    [webView release]; 
} 

et Threads

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    NSLog(@"%i",indexPath.row);//get row number 
    NSLog(@"%@", [threadID objectAtIndex:indexPath.row]);//thread id 
                //forums.whirlpool.net.au/forum-replies.cfm?t= 
                //NSString *urlString = [NSString stringWithFormat:@"forums.whirlpool.net.au/forum-replies.cfm?t=%@", [threadID objectAtIndex:indexPath.row]]; 
    threadContent = [[ThreadContent alloc] init]; 
    threadContent.urlToLoad = [NSURL URLWithString:urlString]; 
    [self.navigationController pushViewController:threadContent animated:YES]; 
} 

(ou rendre la propriété webView une propriété et appeler la méthode de chargement juste avant ou après que vous ayez appuyé sur WebViewController dans Threads, je ne suis pas sûr à 100% si cela fonctionnerait)

+0

merci encore. juste mettre à jour ce fil. – bigubosu

Questions connexes