addSubView不添加子视图

时间:2014-07-16 19:53:04

标签: ios objective-c youtube-api

我有一个应该显示Youtube视频的应用,而我正在使用Youtube ios helper API

我有一个UITabBarController的子类,用于显示两个youtube视频,UITabBarController在NavController中,并从UITableViewController推送到。所以设置看起来像

[NAVController] - 关系 - > [UITableViewController] - 推送 - > [UITabBarController] - 关系 - > [CustomViewController]

现在我的CustomViewController.h看起来像:

#import <UIKit/UIKit.h>
#import "YTPlayerView.h"

@interface CustomViewController : UIViewController<YTPlayerViewDelegate>

@property (strong, nonatomic) YTPlayerView *youtubeView;
@property (strong, nonatomic) NSString *videoID;

@end

我的.m文件有

#import "CustomViewController.h"
#import "YTPlayerView.h"

@interface CustomViewController ()

@end

@implementation CustomViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.

    self.youtubeView.delegate = self;

    self.view.backgroundColor = [UIColor blueColor];

    self.youtubeView.frame = self.view.frame;

    self.youtubeView.backgroundColor = [UIColor redColor];

    [self.view addSubview:self.youtubeView];

    NSLog(@"Subviews %lu", (unsigned long)[self.view.subviews count]);
    NSLog(@"Subviews %@", self.views.subviews);

    BOOL b = [self.youtubeView loadWithVideoId:self.videoID];
    NSLog(@"Loaded? %d", b);
    [self.youtubeView playVideo];        
}

我最终得到的是顶部的导航栏(应该是这样),底部是一个标签栏(应该是这样),但是背景为蓝色而不是红色背景(不用说,没有Youtube视频加载)。当我运行它时,它打印

子视图0 子视图( ) 装? 0

显然,addSubView:调用无效。

我见过this post,但没有帮助。

(对于那些不熟悉youtube ios帮助程序库的人:

  

youtube-ios-player-helper是一个开源库,可帮助您将YouTube iframe播放器嵌入到iOS应用程序中。该库创建了一个UIWebView,它是应用程序的Objective-C代码和YouTube播放器的JavaScript代码之间的桥梁,从而允许iOS应用程序控制YouTube播放器。

(使用iOS 7和Xcode 5.1)

2 个答案:

答案 0 :(得分:3)

由于我没有看到您使用的是IBOutlet,我相信您需要初始化self.youtubeView

self.youtubeView = [[YTPlayerView alloc]init];

self.youtubeView.delegate = self;

self.view.backgroundColor = [UIColor blueColor];

self.youtubeView.frame = self.view.frame;

self.youtubeView.backgroundColor = [UIColor redColor];

[self.view addSubview:self.youtubeView];

答案 1 :(得分:0)

YouTube api不是问题,UINavigation控制器和UITabBarController只是不能很好地协同工作。你应该做的是使一个视图控制器来处理tabbar而不是UITabBarController。 This显示了如何完成任务的一些见解。