From 70c9661251b13f9c5b1fdfaa945901ce75aa75df Mon Sep 17 00:00:00 2001 From: sduflot Date: Wed, 19 Feb 2014 12:55:37 +0100 Subject: [PATCH 1/2] Add support for initWithHTMLString: andBaseUrl: method (like on UIWebView). --- .../SVModalWebViewController.h | 1 + .../SVModalWebViewController.m | 30 +++++++++++++------ SVWebViewController/SVWebViewController.h | 1 + SVWebViewController/SVWebViewController.m | 22 +++++++++++++- 4 files changed, 44 insertions(+), 10 deletions(-) diff --git a/SVWebViewController/SVModalWebViewController.h b/SVWebViewController/SVModalWebViewController.h index aa4d84c..613b6e7 100644 --- a/SVWebViewController/SVModalWebViewController.h +++ b/SVWebViewController/SVModalWebViewController.h @@ -14,6 +14,7 @@ - (id)initWithAddress:(NSString*)urlString; - (id)initWithURL:(NSURL *)URL; +- (id)initWithHTMLString:(NSString *)htmlString andBaseUrl:(NSURL *)baseUrl; @property (nonatomic, strong) UIColor *barsTintColor; diff --git a/SVWebViewController/SVModalWebViewController.m b/SVWebViewController/SVModalWebViewController.m index f801fa2..2d9f3a4 100644 --- a/SVWebViewController/SVModalWebViewController.m +++ b/SVWebViewController/SVModalWebViewController.m @@ -11,11 +11,12 @@ @interface SVModalWebViewController () +- (void) initializeDoneButton; + @property (nonatomic, strong) SVWebViewController *webViewController; @end - @implementation SVModalWebViewController #pragma mark - Initialization @@ -28,18 +29,29 @@ - (id)initWithAddress:(NSString*)urlString { - (id)initWithURL:(NSURL *)URL { self.webViewController = [[SVWebViewController alloc] initWithURL:URL]; if (self = [super initWithRootViewController:self.webViewController]) { - UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone - target:self.webViewController - action:@selector(doneButtonClicked:)]; - - if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) - self.webViewController.navigationItem.leftBarButtonItem = doneButton; - else - self.webViewController.navigationItem.rightBarButtonItem = doneButton; + [self initializeDoneButton]; } return self; } +- (id)initWithHTMLString:(NSString *)htmlString andBaseUrl:(NSURL *)baseUrl { + self.webViewController = [[SVWebViewController alloc] initWithHTMLString:string andBaseUrl:baseUrl]; + if (self = [super initWithRootViewController:self.webViewController]) { + [self initializeDoneButton]; + } + return self; +} + +- (void) initializeDoneButton { + UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone + target:self.webViewController + action:@selector(doneButtonClicked:)]; + if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) + self.webViewController.navigationItem.leftBarButtonItem = doneButton; + else + self.webViewController.navigationItem.rightBarButtonItem = doneButton; +} + - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:NO]; diff --git a/SVWebViewController/SVWebViewController.h b/SVWebViewController/SVWebViewController.h index 42e9dfe..2e1f211 100644 --- a/SVWebViewController/SVWebViewController.h +++ b/SVWebViewController/SVWebViewController.h @@ -12,5 +12,6 @@ - (id)initWithAddress:(NSString*)urlString; - (id)initWithURL:(NSURL*)URL; +- (id)initWithHTMLString:(NSString *)htmlString andBaseUrl:(NSURL *)baseUrl; @end diff --git a/SVWebViewController/SVWebViewController.m b/SVWebViewController/SVWebViewController.m index 2e08ebc..eb5963f 100644 --- a/SVWebViewController/SVWebViewController.m +++ b/SVWebViewController/SVWebViewController.m @@ -20,10 +20,14 @@ @interface SVWebViewController () @property (nonatomic, strong) UIWebView *webView; @property (nonatomic, strong) NSURL *URL; +@property (nonatomic, strong) NSURL *baseUrl; +@property (nonatomic, strong) NSString *htmlString; - (id)initWithAddress:(NSString*)urlString; - (id)initWithURL:(NSURL*)URL; +- (id)initWithHTMLString:(NSString *)string andBaseUrl:(NSURL *)baseUrl; - (void)loadURL:(NSURL*)URL; +- (void)loadHTMLString:(NSString *)string; - (void)updateToolbarItems; @@ -59,15 +63,31 @@ - (id)initWithURL:(NSURL*)pageURL { return self; } +- (id)initWithHTMLString:(NSString *)htmlString andBaseUrl:(NSURL *)baseUrl { + if (self = [super init]) + { + self.baseUrl = baseUrl; + self.htmlString = string; + } + return self; +} + - (void)loadURL:(NSURL *)pageURL { [self.webView loadRequest:[NSURLRequest requestWithURL:pageURL]]; } +- (void)loadHTMLString:(NSString *)string andBaseUrl:(NSURL *)baseUrl{ + [self.webView loadHTMLString:string baseURL:baseUrl]; +} + #pragma mark - View lifecycle - (void)loadView { self.view = self.webView; - [self loadURL:self.URL]; + if (self.htmlString) + [self loadHTMLString:self.htmlString andBaseUrl:self.baseUrl]; + else + [self loadURL:self.URL]; } - (void)viewDidLoad { From 87d832495da6a76a97880e7648fa10e28c309f90 Mon Sep 17 00:00:00 2001 From: sduflot Date: Wed, 19 Feb 2014 14:17:25 +0100 Subject: [PATCH 2/2] Fixed refactoring issue with htmlString --- SVWebViewController/SVModalWebViewController.m | 2 +- SVWebViewController/SVWebViewController.m | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/SVWebViewController/SVModalWebViewController.m b/SVWebViewController/SVModalWebViewController.m index 2d9f3a4..6a543f2 100644 --- a/SVWebViewController/SVModalWebViewController.m +++ b/SVWebViewController/SVModalWebViewController.m @@ -35,7 +35,7 @@ - (id)initWithURL:(NSURL *)URL { } - (id)initWithHTMLString:(NSString *)htmlString andBaseUrl:(NSURL *)baseUrl { - self.webViewController = [[SVWebViewController alloc] initWithHTMLString:string andBaseUrl:baseUrl]; + self.webViewController = [[SVWebViewController alloc] initWithHTMLString:htmlString andBaseUrl:baseUrl]; if (self = [super initWithRootViewController:self.webViewController]) { [self initializeDoneButton]; } diff --git a/SVWebViewController/SVWebViewController.m b/SVWebViewController/SVWebViewController.m index eb5963f..185f43c 100644 --- a/SVWebViewController/SVWebViewController.m +++ b/SVWebViewController/SVWebViewController.m @@ -67,7 +67,7 @@ - (id)initWithHTMLString:(NSString *)htmlString andBaseUrl:(NSURL *)baseUrl { if (self = [super init]) { self.baseUrl = baseUrl; - self.htmlString = string; + self.htmlString = htmlString; } return self; }