调用方法时,UIWebView显示为null

时间:2012-03-25 18:46:38

标签: iphone objective-c ios xcode

尝试访问在ViewDidLoad期间创建的UIWebView时,我遇到了一个主要问题,UIWebView显示为空

这是我如何声明属性

@property (nonatomic, retain) UIWebView *detailsView;

实施

@implementation iPadMainViewController

@synthesize detailsView;


- (void)viewDidLoad
{
    [super viewDidLoad];

    detailsView = [[UIWebView alloc] initWithFrame:CGRectMake(500, 0, 512, 768)];
    [self.view addSubView:detailsView];
}

访问时
- (void)loadDetailedContent:(NSString *)s
{
    NSLog(@"%@", detailsView);
}

我得到NULL,这是正常行为还是我做错了什么?

这是从被触摸的视图子类调用的touchesBegan,

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    iPadMainViewController *mycontroller = [[iPadMainViewController alloc] init];
    self.delegate = mycontroller;

    [self.delegate loadDetailedContent:NewsId];
}

2 个答案:

答案 0 :(得分:0)

您确定loadDetailedContent之前未调用viewDidLoad吗?在两种方法中设置断点,并查看哪一个被击中。

编辑由于您使用代码更新了问题,因此很容易理解为什么会出现此问题。在touchesBegan中,您实例化UIViewController,然后调用loadDetailedContent。这意味着loadDetailedContent将在viewDidLoad之前调用。

viewDidLoad在创建它控制的视图时首先被调用。

答案 1 :(得分:0)

首先改变你合成的

@synthesize detailsView = _detailsView

并分配你的uiwebvie

_detailsView = [[UIWebView alloc] initWithFrame:CGRectMake(500, 0, 512, 768)];

尝试将touchBegan中的ipadMainController推送到主屏幕,并在vieDidLoad中调用loadDetailedContent