点击tableView任意一行,跳转至UIWebView,显示相应网页,代码如下:
AppDelegate.m
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.window = [[UIWindow alloc]initWithFrame:[[UIScreen mainScreen] bounds]];
BNRCoursesViewController *cvc = [[BNRCoursesViewController alloc] initWithStyle:UITableViewStylePlain];
UINavigationController *masterNav = [[UINavigationController alloc]initWithRootViewController:cvc]; //将tableVC包含在导航VC中
BNRWebViewController *wvc =[[BNRWebViewController alloc]init];
cvc.webViewController = wvc;
self.window.rootViewController = masterNav;
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
// Override point for customization after application launch.
return YES;
}
BNRCoursesViewController.m
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
//BNRCoursesViewController.m
NSDictionary *course = self.courses[indexPath.row];
self.webViewController.URL = [NSURL URLWithString:course[@"url"]];
self.webViewController.title = course[@"title"];
[self.navigationController pushViewController:self.webViewController animated:YES];
}
练习中要在UIWebView下方添加一个UIToolbar用来放置后退前进的button。
我用了navigation自带的setToolbar方法
[self.navigationController setToolbarHidden:NO animated:YES]
但是发现在viewDidload中使用却没有效果, 在viewWillAppear中却可以成功,
按理来说WebViewController加载viewLoad方法时应该能调用此方法啊,请问为什么不成功呢?
BNRWebViewController.m部分代码如下
#import "BNRWebViewController.h"
@interface BNRWebViewController ()<UIWebViewDelegate>
@property (nonatomic,strong) UIWebView *webView;
@property (nonatomic, strong) UIBarButtonItem *backButton;
@property (nonatomic, strong) UIBarButtonItem*forwardButton;
@end
@implementation BNRWebViewController
#pragma load
-(void)loadView{ //加载webView
self.webView = [[UIWebView alloc] init];
self.webView.scalesPageToFit = YES;
self.webView.delegate = self;
self.backButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemRewind target:self action:@selector(goBack:)];
self.forwardButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFastForward target:self action:@selector(goForward:)];
[self.backButton setEnabled:NO];
[self.forwardButton setEnabled:NO];
[self setToolbarItems:[NSArray arrayWithObjects:self.backButton,self.forwardButton, nil]];
self.view = self.webView;
}
-(void)viewDidLoad{
[super viewDidLoad];
//[self.navigationController setToolbarHidden:NO animated:YES]; 无效
}
-(void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
[self.navigationController setToolbarHidden:NO animated:YES]; //有效
}
-(void)viewWillDisappear:(BOOL)animated{
[super viewWillDisappear:animated];
[self.navigationController setToolbarHidden:YES animated:YES];
}
-(void)webViewDidFinishLoad:(UIWebView *)webView {
[self.backButton setEnabled:[self.webView canGoBack]];
[self.forwardButton setEnabled:[self.webView canGoForward]];
}
刚才写了个demo测试,将[self.navigationController setToolbarHidden:NO animated:YES];写在viewDidload中是有效果的。是不是楼主其他代码有影响到,代码能否贴详细点..