尝试访问在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];
}
答案 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