addSubview仅适用于viewDidLoad

时间:2013-07-03 04:09:59

标签: iphone ios uiviewcontroller addsubview

我正在开发一款应用,当按下按钮时,该应用必须显示YouTube视频。

我正在使用在网站其他地方找到的代码,在大多数情况下看起来运行正常,但在我的情况下却不是。

- (void)displayVideo{

CGRect frame = CGRectMake(5,55, 200,310);
    NSLog(@"Trying to display video with ID: %@", videoID);
    NSString *embedHTML =[NSString stringWithFormat:@"\
                          <html><head>\
                          <style type=\"text/css\">\
                          body {\
                          background-color: transparent;\
                          color: white;\
                          }\
                          </style>\
                          </head><body style=\"margin:0\">\
                          <iframe height=\"200\" width=\"310\"      src=\"http://www.youtube.com/embed/%@\"></iframe>\
                          </body></html>", videoID];
    UIWebView *videoView = [[UIWebView alloc] initWithFrame:frame];

    videoView.backgroundColor = [UIColor redColor];
    [videoView loadHTMLString:embedHTML baseURL:nil];
    [self.view addSubview:videoView];
    [self.view setNeedsDisplay]; }

按下按钮时运行该方法。 NSLog运行良好,所以我知道代码正在运行 - 视图似乎拒绝更新。

一时兴起,我尝试将代码放在ViewController的viewDidLoad方法中,令人惊讶的是,它运行良好。

有没有人对这可能是什么有任何想法?

1 个答案:

答案 0 :(得分:1)

您可以在viewDidLoad中添加子视图,将其隐藏到按下按钮,然后在按下按钮时将隐藏属性的值设置为NO。

那说我看不出为什么视图不会被添加到viewDidLoad之外的层次结构中的原因。由于这是一个webView,我认为您可以尝试将其添加到名为- (void)webViewDidFinishLoad:(UIWebView *)aWebView的委托方法内的视图层次结构中。不要忘记正确设置代理。