定义出口,连接它们,它们都返回(null)

时间:2010-03-23 13:37:19

标签: iphone objective-c cocoa-touch interface-builder uiwebview

我正在尝试使用WebView。

我做了一个出路:

IBOutlet UIWebView *browser;

将其定义为财产:

@property (nonatomic, retain) IBOutlet UIWebView *browser;

综合它:

@synthesize browser;

最后,我在Interface Builder中连接它,实际上它是。

然后我尝试用它做点什么,即:

[browser loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://apple.com"]]];

或者:

Etape *etape = [[Etape alloc] init];

NSString *html = [etape generateHTMLforEtape:[current_etape objectAtIndex:0]];
[browser loadHTMLString:html baseURL:nil];

[etape release];

我没有错误,我试图构建&分析,没有通知或警告或错误..我一直在寻找一整天,请帮助我:/

非常感谢!

编辑:这是我的WebView连接的屏幕截图: Connections http://pousli.net/uploads/crap/outlet.png

编辑:这就是我调用视图的方式:

    DetailViewController *dvController = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:[NSBundle mainBundle]];

    dvController.workflow_id = parent_id;

    Etape *etape = [[Etape alloc] init];
    dvController.etapes = [etape getEtapes:parent_id];
    [etape release];

    [self.navigationController pushViewController:dvController animated:YES];

    [dvController release];

5 个答案:

答案 0 :(得分:3)

一些想法:

根据您运行此代码的方法,可能还没有连接插座。在调用viewDidLoad的实现后,开始与您的商店进行互动的最常见地方是viewWillAppear:viewDidAppear:super方法。如果您尝试使用init方法执行此操作,则您的商店可能仍为nil。在有人请求您的viewcontroller的view之前,没有加载笔尖并且连接出口。这可能是你正在经历的事情吗?

如果你NSLog(@"%@", browser);在一个方法中,你知道该视图应该存在,但是记录了(null),那么这表明你的网点已经以某种方式丢失了它们的连接。

编辑#1 当您致电initWithNibName:bundle:时,您确定自己的xib名称拼写正确吗? (顺便说一下,你可以为nil传递包,它会假设[NSBundle mainBundle]

答案 1 :(得分:1)

有一点是你可能已将它连接到@property或IBOutlet(根据我的经验,Interface Builder很容易混淆)。也许尝试声明:

UIWebView *browser_;
@property (nonatomic, retain) IBOutlet UIWebView *browser;
@synthesize browser=browser_;

答案 2 :(得分:1)

这可能是由于你init视图的方式。如果视图控制器正在代码中加载,那么您需要确保其视图也被加载。

使用init执行此initWithNibName:bundle:视图控制器,并确保包含视图的NIB中的“文件所有者”设置为视图控制器的类名。

答案 3 :(得分:1)

一种解释是浏览器未被保留,因为您没有使用“self.attribute”构造来调用执行保留的合成setter。浏览器正在加载笔尖,但是当你开始使用它时,它已被释放。

尝试将“浏览器”切换为“self.browser”并查看是否可以解决问题。

答案 4 :(得分:1)

我以前遇到过这个问题。它看起来很紧密,但事情就是行不通。我不想这么说,但你试过重启Xcode吗? (我之前遇到过这个问题,并且,重启Xcode解决了这个问题。)