在单个视图应用程序中被UIWebView困惑

时间:2012-08-10 22:46:17

标签: objective-c xcode uiwebview

我可以在选项卡式应用程序中执行此操作,没问题,但让它在单视图应用程序中工作(使用xib)让我发疯。

我创建了一个新类WebViewController。标题是:

#import <Foundation/Foundation.h>
#import "GHViewController.h"

@interface GHWebViewController : UIViewController <UIWebViewDelegate>
{
    IBOutlet UIWebView *webView;
}

@property (nonatomic, retain) UIWebView *webView;

@end

实施是:

#import "GHWebViewController.h"

@implementation GHWebViewController

@synthesize webView = _webView;

-(void)viewDidLoad
{
    [super viewDidLoad];
    NSString *fullURL=@"http://www.amazon.com/Books-by-Joel-Derfner/lm/RVZNXKV59PL51/ref=cm_lm_byauthor_full";
    NSURL *url = [NSURL URLWithString:fullURL];
    NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
    [webView loadRequest:requestObj];
}

@end

到目前为止,这么好。但是,进入Web视图只是用户可以使用的几个选项(通过栏按钮)。所以我在UIWebView添加了ViewController,但隐藏了它,直到用户按下按钮进入网络视图。

这就是我被困住的地方。我已经尝试将其作为其中的代表,并且是另一件事的代表,我不知道什么是对的,什么是错的,IBOutlet中的WebViewController将无法连接到我ViewController中的任何事情都让我越来越困惑。我尝试为WebViewController添加另一个xib,但这只会导致灾难。我不在这里。

所以我的多部分问题是:

  1. 正如我在单视图应用程序中描述的那样,使用UIWebView作为几个选项之一?
  2. 如果是这样,我需要做什么才能完成它 - 考虑a)委托,b)代码和c)用户界面中的连接?
  3. 如果没有,我该如何处理这项任务呢?
  4. 关闭以查看Total Recall。也许那会让我清醒过来......

1 个答案:

答案 0 :(得分:1)

我不太确定我是否完全理解你的问题;你的3个问题之前的段落有些令人困惑......

但有些想法:

  1. 您不需要界面中的ivar。 ESP。你的ivar声明中不应该有IBOutlet。如果您需要IBOutlet,则应该在@property声明中,而不是您的ivar。

  2. 也许你真的不需要IBOutlet。即你不需要将你的webView放在xib上。 (如果你愿意,你可以,但你不需要。)

  3. 所以你可以让IBAction与一个按钮联系起来。单击该按钮后,您可以alloc init您的webView(并设置其框架),将其添加到self.view,然后设置webview.delegate = self或其他内容。

  4. 然后你可以正常处理loadURL和其他东西。当您再次点击该按钮(或其他按钮)时,只需从视图中删除您的网页浏览。