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..6a543f2 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:htmlString 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..185f43c 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 = htmlString; + } + 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 {