uiwebview problem loading page - iphone

My webpage will not load it shows nothing I have 3 viewcontrollers in firstviewcontroller you click the button which loads the next page thirdviewcontroller up to this point all is good but the webpage doesnt load
code from firstviewcontroller
-(IBAction)moveToViewSiteView:(id)sender{
self.third = [[[SecondViewController alloc]initWithNibName:#"ThirdViewController" bundle:nil]autorelease];
[self.navigationController pushViewController:self.third animated:YES];
}
code in thirdviewcontroller
- (void)viewDidLoad {
NSString *urlAddress=#"http://www.apple.com/";
NSURL *url=[NSURL URLWithString:urlAddress];
NSURLRequest *requestObj= [NSURLRequest requestWithURL:url];
[self.cscsPage loadRequest:requestObj];
[super viewDidLoad];
}
the uiwebview i have called webview in the document window in ib if i drag from files owner to the webview then when i run it the app crashes.
hope all is clear
thanks

Move [super viewDidLoad]; to the top of viewDidLoad method. You should invoke the super class implementation of it first.

Related

UIActivity subclass open a webview

I'm trying create a subclass of UIActivity to add a custom button to a UIActivityViewController. I want this custom button to be able to open a link without leaving the application. I've found numerous solutions that allow for opening things in safari, but I can't figure out if it is possible to just open a UIWebview inside my app (Modal view perhaps?).
I've tried creating a `UIWebview in the delegate method to handle the click, but since this isn't a viewcontroller I can't add it to the view hierarchy.
- (void)prepareWithActivityItems:(NSArray *)activityItems{
UIWebView *webView=[[UIWebView alloc] initWithFrame:CGRectMake(0,0,320,480)];
NSURLRequest *urlRequest;
NSURL *urlforWebView;
urlforWebView=[NSURL URLWithString:#"http://www.google.com"];
urlRequest=[NSURLRequest requestWithURL:urlforWebView];
[webView loadRequest:urlRequest];
}
// example:Need to add your webview to your mainview first
UIWebView *webView = [[UIWebView alloc] init];
[webView setFrame:CGRectMake(0, 0, 320, 460)];
[webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:#"http://google.com"]]];
[[self view] addSubview:webView];
I believe this project implements just what you would like to do but it opens in safari: https://github.com/davbeck/TUSafariActivity Good for starting point.
The activity itself cannot open the view as it is not connected to the controller view hierarchy. You need some way to tell the host controller that the user has selected your activity. The easiest way to do this is through notifications:
The view controller registers for notifications with a given identifier.
The activity posts this notification if performed.
The notification is processed by the activity in the handler method and it opens the web view.
Don't forget to unregister the view controller from the notification center if the controller is being removed from the navigation stack.
There are lots of examples for using notifications, like this Send and receive messages through NSNotificationCenter in Objective-C?
Try this
UIPlainViewController here is just a custom UIViewController with a WebView added to it. Implement (UIViewController *)activityViewController in your derived UIActivity class as such:
(UIViewController *)activityViewController {
NSString *page = #"some url";
NSURL *url = [[NSURL alloc] initWithString:page];
NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url];
[((UIPlainViewController*)self.plainViewController).webView loadRequest:request];
return self.plainViewController;
}

Passing a string from IBAction to a separate View Controller

I am trying to pass a String from an IBAction in my DetailsViewController to the viewDidLoad in my WebViewController to call up a URL in the WebView.
Does anybody know how I can do this?
My Code:
// DetailsViewController.m
- (IBAction)edu1Link:(id)sender {
NSString *webURL = [[NSString webURL] initWithString:#"http://www.apple.com"];
_webViewController = [[WebViewController alloc]
initWithNibName:#"WebViewController" bundle:nil];
[[self navigationController] presentModalViewController:_webViewController animated:YES];
}
// WebViewController.m
- (void)viewDidLoad
{
[_webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:webURL]]];
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
}
You could declare a property in your WebViewController and set that property in the action before presenting the view controller.
I guess the best way would be to use a delegate methode
here is a tutorial how you would do that
What albertamg is referring to is Objective-C properties. They are very powerful. Take a peak here: http://cocoacast.com/?q=node/103
Properties are like instance fields in Java. They're helpful in side-stepping zero-parameter-methods.

change the content of a UIWebView from another Controller

I have a TableViewController which is supposed to load a ViewController with a WebView in it when I select a cell.
Here's the code :
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
PostViewController *postViewController = [[PostViewController alloc] initWithNibName:#"PostViewController" bundle:[NSBundle mainBundle]];
[postViewController.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:#"http://www.google.fr"]]]
[self.navigationController pushViewController:postViewController animated:YES];
[PostViewController release];
}
The problem is that the ViewController is loaded but nothing happens in the WebView.
When I debug the program I can see that the WebView's address is 0x0 so I guess something's wrong.
Is it because I try to modify the content of the WebView before its parent ViewController is loaded ?
I guess another way to do it properly would be to pass the URL to the ViewController and then to call loadRequest on the WebView from inside the viewWillAppear method.
But I need to understand why it doesn't work this way.
Try this
Instead of accessing the WebView why dont you just pass the URL value to the ViewController and load the Webview in the viewDidLoad of postViewController.
In your case
PostViewController *postViewController = [[PostViewController alloc] initWithNibName:#"PostViewController" bundle:[NSBundle mainBundle]];
postViewController.urlString = #"http://www.google.fr";
[self.navigationController pushViewController:postViewController animated:YES];
[PostViewController release];
In your postViewController.h declare the urlString with properties and synthesize in the .m file
Now in your viewDidLoad
//Alloc init your webview here
[webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:urlString]]];
0x0 is the address of nil, meaning that your web view has not been initialized at this point.
If you're creating your web view in the loadView or viewDidLoad methods of PostViewController, then calling setNeedsLayout immediately after initialization will force its creation:
PostViewController *postViewController = [[PostViewController alloc] init ...
[postViewController.view setNeedsLayout];
Otherwise, these methods will not be called until your view is displayed.

iphonesdk using tableview and html

im making an application where i have to load my database from html file which is in my resource folder. i have a table view and when i click on a certain cell it will open html file based on that click. can any one help me how to do this. thanks
// create a web view in "cellForRowAtIndexPath"
UIWebView *wv = [[UIWebView alloc] initWithFrame:CGRectMake(0,0,320,480)];
[wv loadHTMLString: << your html >> baseURL: nil];
wv.delegate = self;
// implement the webView delegate
- (void) webViewDidFinishLoad:(UIWebView *)webView {
[self.view addSubView:webView]; // or push onto the naviation controller
}
I think when you 'didSelectCellAtIndex' in the table view will open a new view controller with the webview. And you have also mapping of each cell with the corresponding html file name. Then in the viewDidLoad method of your next VC, you can use this code, while webView is the outlet pointing to your UIWebView. And htmlFileName is the html file's name.
[webView loadRequest:[NSURLRequest requestWithURL:
[NSURL fileURLWithPath:[[NSBundle mainBundle]
pathForResource:htmlFileName
ofType:#"html"]
isDirectory:NO] ] ];

On Iphone, how do I implement a button that will open up a website?

From my Objective C iPhone app, I want a user to click on a "Register" for account button and then open up a registration page on my website. What is the code on the iPhone to open up a website in response to a user action?
Create a UIButton and assign the action to a method like this:
- (IBAction)register:(id)sender {
//you'll want to subclass UIViewController
SomeViewController *webViewController = [[SomeViewController alloc]init];
[self presentModalViewController:webViewController animated:YES];
[webViewController release];
}
Your SomeViewController will have a webview that load's your register page. Then in your "SomeViewController"'s viewDidLoad, do something like this:
- (void)viewDidLoad
{
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:#"http://mysite.com/register"]];
//this is a webview that you either created in -loadView or IB
[self.webView loadRequest:request];
}