How do I load an HTML file into my app (xcode)? I'm using the following code:
- (void)viewDidLoad
{
[super viewDidLoad];
[webView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:#"index" ofType:#"html"]isDirectory:NO]]];
}
When I start the app, I only see a white page. What's wrong?
.h file:
#import <UIKit/UIKit.h>
#interface poules : UIViewController {
IBOutlet UIWebView *webView;
}
#property (nonatomic,retain) UIWebView *webView;
#end
Here is a working example from one of my projects. My index.html file is in a folder called Documentation/html in the resources directory. Its important to note that these are "folder references", not groups (hence the blue icon):
then to load it in a webView:
NSString *resourceDir = [[NSBundle mainBundle] resourcePath];
NSArray *pathComponents = [NSArray arrayWithObjects:resourceDir, #"Documentation", #"html", #"index.html", nil];
NSURL *indexUrl = [NSURL fileURLWithPathComponents:pathComponents];
NSURLRequest *req = [NSURLRequest requestWithURL:indexUrl];
[webView loadRequest:req];
try loadHTMLString:baseURL: method
NSString *html=[NSString stringWithContentsOfFile:your_html_path encoding:NSUTF8StringEncoding error:nil];
[webview loadHTMLString:html baseURL:baseURL];
First thing you can check whether your webView is connected or not.
If it is then, you can break down your code to check what is wrong with request that you are trying to load.
1.. Create a NSString for the file path like this, and check if the path is returned or not.
NSString *urlString = [[NSBundle mainBundle] pathForResource:#"index" ofType:#"html"];
2.. Create a NSURL from the above string like this, and check if the url is correct or nil.
NSURL *url = [NSURL URLFromString:urlString];
3.. And then create the request.
NSURLRequest *request = [NSURLRequest requestFromURL:url];
Related
SystemSoundID soundID6; // declaration
NSURL *gamePlayMusic = [NSURL fileURLWithPath:[[NSBundle
mainBundle]pathForResource:#"song1" ofType:#"wav"]];
AudioServicesCreateSystemSoundID((__bridge CFURLRef)Music,&soundID6);
AudioServicesPlaySystemSound(soundID6); //running of music
may I know what to code to run this music again after it finish/complete.
1. Add AVKit.framework.
2.create a global webview object like UIWebView* audioPlayerView;
3.create a button action for playing audio file
4.your mp3 file add in to your bundel.
-(IBAction)playAudioFile:(UIButton*)sender
{
NSString *path = [[NSBundle mainBundle] pathForResource:#"your file name" ofType:#"mp3"];
NSURL *targetURL = [NSURL fileURLWithPath:path];
NSURLRequest *request = [NSURLRequest requestWithURL:targetURL];
[audioPlayerView loadRequest:request];
[audioPlayerView setScalesPageToFit:YES];
[self.view addSubview:audioPlayerView];
}
I have the following code in an AppDelegate.m file that opens Google when I open my app. I am trying to change it to open a .HTML web page I copied into my Xcode project but it is not working. I am using Xcode 4.5.2.
The code that works to open Google is:
#implementation MDAppDelegate
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:#"http://www.google.com"]];
[self.webView.mainFrame loadRequest:request];
}
I tried changing it to (so that it would load my test.html file I put in the project folder but the app just comes up blank now). What am I missing?
#implementation MDAppDelegate
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:#"test.html"]];
[self.webView.mainFrame loadRequest:request];
}
As long as your test.html is copied at the root of your project (make sure it's also copied to your final app bundle, huh? - check Build Phases) you can load it up your Web View using this code :
NSString *path = [[NSBundle mainBundle] pathForResource:#"test" ofType:#"html"];
NSURL* fileURL = [NSURL fileURLWithPath:path];
NSURLRequest* request = [NSURLRequest requestWithURL:fileURL];
[self.webView.mainFrame loadRequest:request];
[NSURL URLWithString:#"test.html"] is not creating a valid URL to your file. Try that: (it is from an iOS project, but should apply to OS X apps as well). I'm using loadHTMLString:baseURL: instead of loadRequest:
NSString* fileName = [[NSBundle mainBundle] pathForResource:#"test" ofType:#"html"];
NSString* htmlString = [NSString stringWithContentsOfFile:fileName encoding:NSUTF8StringEncoding error:NULL];
NSURL *baseURL = [[NSBundle mainBundle] bundleURL];
[self.webView loadHTMLString:htmlString baseURL:baseURL];
[NSURL URLWithString:#"test.html"]
There's your problem. Assuming that your test.html file is in the resource folder of your application bundle, do this instead:
[[NSBundle mainBundle] URLForResource:#"test" withExtension:#"html"];
NSBundle has a few other methods for easily creating URLs in case the one above isn't appropriate (like if the file is in a subdirectory). Take a look at the NSBundle reference page for more info.
To play a button sound when button tapped, I use AudioToolbox and AVFoundation.
I import these in my .h using
#import <AVFoundation/AVFoundation.h>
#import <AudioToolbox/AudioToolbox.h>
Via storyboard, I connected a UIButton to a new IBAction and then included the following in my .m
- (IBAction)playSound11:(id)sender {
//Load an audio file from the bundle
NSString *audioFile = [[NSBundle mainBundle] pathForResource:#"11" ofType:#"mp3"];
//Convert string to NSURL
NSURL *audioURL = [NSURL fileURLWithPath:audioFile];
//Initialize an audio player with the mp3 URL
AVAudioPlayer *player = [[AVAudioPlayer alloc] initWithContentsOfURL:audioURL error:nil];
// Start playing
[player play];
}
I get no issues and the app does open but there is no sound at all.
What am I doing wrong?
Problem with your URL perhaps?
This is how I use it
NSURL *audioURL = [NSURL fileURLWithPath:[NSString stringWithFormat:#"%#/11.mp3", [[NSBundle mainBundle] resourcePath]]];
This is my code:
-(void)viewDidLoad
{
[super viewDidLoad];
NSString *indexPath = [NSBundle pathForResource:#"iHelp" ofType:#"html" inDirectory:nil];
[webView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:indexPath]]];
}
The app is crashing because 'nil' for directory name is invalid (DUH!). So for an imbedded html file, what should go there?
UPDATE: found that "webView" has no outlet, although one is defined in the .h file... will close this because I believe there is an answer here. Will open a new question re: the outlets... thanks everybody!
If the file iHelp is in the main bundle, you can retrieve its path like this:
NSString *indexPath = [[NSBundle mainBundle] pathForResource:#"iHelp" ofType:#"html"];
[webView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:indexPath]]];
You can also do that like the following:
NSURL *indexURL = [[NSBundle mainBundle] URLForResource:#"iHelp" withExtension:#"html"];
[webView loadRequest:[NSURLRequest requestWithURL:indexURL]];
Drop the inDirectory: parameter as it will default to your current bundle. Note: it's an instance method.
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- (void)viewDidLoad
{
[super viewDidLoad];
NSBundle *bundle = [NSBundle mainBundle];
NSString *indexPath = [bundle pathForResource:#"iHelp" ofType:#"html"];
[webView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:indexPath]]];
If it isn't inside a folder reference, just omit that argument:
[[NSBundle mainBundle] pathForResource:#"iHelp" ofType:#"html"];
You can even go straight to URL:
[[NSBundle mainBundle] URLForResource:#"iHelp" withExtension:#"html"];
I don't understand why if I load the content of a UIWebView in XCode this way:
NSString *string = #"http://www.dummyurl.org/dummy.pdf";
NSURL *url = [NSURL URLWithString:string];
[my_view loadRequest:[NSURLRequest requestWithURL:url]];
everything works fine, but if a build the original string from a php script I wrote:
NSString *strURL = [NSSTring stringWithFormat:#"www.myserver.php"];
NSString *string = [[NSString alloc] initWithContentsOfURL:[NSURL URLWithString:strURL]];
NSURL *url = [NSURL URLWithString:string];
[my_view loadRequest:[NSURLRequest requestWithURL:url]];
nothing works. I checked my script and it returns EXACTLY the original string (http://www.dummyurl.org/dummy.pdf) that works fine with the first method.
I build from a PHP script the content of a UITextView too, but that works fine.
I don't understand why this method works with the UITextView but not with the UIWebView to load the .pdf.
It may be useful
NSCharacterSet *characterSet = [NSCharacterSet whitespaceAndNewlineCharacterSet];
NSString *tempString = [string stringByTrimmingCharactersInSet:characterSet];
NSURL *url = [NSURL URLWithString:string];
[my_view loadRequest:[NSURLRequest requestWithURL:url]];
Make sure you linked the webview (IBOutlet) and the delegate.
With this lines it should load a url:
webView.delegate = self;
NSURLRequest *urlRequest;
NSString *urlToOpen = [NSString stringWithFormat:#"http://www.stackoverflow.com"];
urlRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:urlToOpen]];
[self.webView loadRequest:urlRequest];
Hope this helps...
I had this and it was a cache problem:
[webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:url] cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:60.0]];