prajakta
prajakta

Reputation: 673

write to a html file and display on iphone

i have a local html file that i can display on UIWebview now is there a way like i can pass my string value to that html page and display the content???

this is how i am loading html

NSString *urlAddress = [[NSBundle mainBundle] pathForResource:@"index4" ofType:@"html"];  



    NSURL   *instructionsURLd = [[NSURL alloc] initFileURLWithPath:urlAddress];


    [webView loadRequest:[NSURLRequest requestWithURL:instructionsURLd]];

now index4.html content is

<html>
<body>
testing hhhhhhhhhhhhhhhhhhhhhhhhhhhhh 
<a href="index200.html">index1</a>
<TD><INPUT TYPE=BUTTON OnClick="Circle_calc(this.form);" VALUE="calculate"></TD>

</body>
</html>

//

now lets say i have NSString s=@"hello"

now can i add this value to the < body > tag of html and show in UIwebview??

Upvotes: 0

Views: 1798

Answers (2)

user2284897
user2284897

Reputation: 1

You can simply do this by creating javascript method in HTML and then call it via IOS if you want to pass that string to html from IOS

Upvotes: 0

aqua
aqua

Reputation: 3375

You cannot store mutable (changing) objects in your application bundle. However, you can put them there before building you app, open them when the app is executing, and write them to disk, and modify them whenever you want, after that.

Your code

NSString *s; s = @"hello";

NSString *urlAddress = [[NSBundle mainBundle] pathForResource:@"index4" ofType:@"html"];
NSURL   *instructionsURLd = [[NSURL alloc] initFileURLWithPath:urlAddress];
NSError *error;

When your starts for the first time only Grab the resource and store it into a string

NSString *myHTML = [NSString stringWithContentsOfURL:instructionsURLd encoding:NSASCIIEncoding error:&error];

Immediately write the data to disk

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSData *myData = [NSData dataWithBytes:[myHTML UTF8String] length:[myHTML lengthOfBytesUsingEncoding:NSUTF8StringEncoding]];
NSString *appFile = [documentsDirectory stringByAppendingPathComponent:@"index4.html"];
[myData writeToFile:appFile atomically:YES];

Then, load it when you need it

NSArray *paths2 = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory2 = [paths2 objectAtIndex:0];
NSString *appFile2 = [documentsDirectory2 stringByAppendingPathComponent:@"index4.html"];
NSData *mySavedData = [[[NSData alloc] initWithContentsOfFile:appFile2] autorelease];
NSString *myNewHTML = [[NSString alloc] initWithData:mySavedData encoding:NSUTF8StringEncoding];

Insert s into the HTML document

myNewHTML = [myHTML stringByReplacingOccurrencesOfString:@"<body>" withString:[NSString stringWithFormat:@"<body> %@",s]];

Write everything back to the file

NSArray *paths3 = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory3 = [paths objectAtIndex:0];
NSMutableData *myData3 = [NSData dataWithBytes:[myNewHTML UTF8String] length:[myNewHTML lengthOfBytesUsingEncoding:NSUTF8StringEncoding]];
NSString *appFile3 = [documentsDirectory3 stringByAppendingPathComponent:@"index4.html"];
NSData *myNewData = [NSData dataWithBytes:[myNewHTML UTF8String] length:[myNewHTML lengthOfBytesUsingEncoding:NSUTF8StringEncoding]];
[myNewData writeToFile:appFile3 atomically:YES];

Upvotes: 2

Related Questions