【问题标题】:addSubView not adding subviewaddSubView 不添加子视图
【发布时间】:2014-09-07 11:52:10
【问题描述】:

我有一个应该显示 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)

【问题讨论】:

  • 你在哪里初始化:self.youtubeView?又名:self.youtubeView =[YTPlayerView alloc]init];
  • 很奇怪。这对我以前不起作用,但现在似乎......谢谢!作为后续,在 YT 文档中,它没有显示初始化。 IBOutlet 会自动分配和初始化吗?
  • 是的,IBOutlet 是自动的

标签: ios objective-c youtube-api


【解决方案1】:

由于我没有看到您使用的是 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];

【讨论】:

    【解决方案2】:

    YouTube api 不是这里的问题,UINavigation 控制器和 UITabBarController 不能很好地配合使用。你应该做的是制作一个视图控制器来处理标签栏而不是 UITabBarController。 This 展示了一些关于如何完成它的见解。

    【讨论】:

    • 哈哈,看来troop231的回答为你解决了,但如果你在框架上有问题,这应该会有所帮助
    • 他们似乎很适合我。什么不好?
    • 对不起,我的意思是推送意见。我在以前的应用程序中遇到了问题,请查看stackoverflow.com/questions/576764/… 虽然可能是我在做一些奇怪的事情:P
    • 我使用了 Storyboard segues,效果很好。我很惊讶它不能使用 pushViewController:animated:。 iOS 经常有这样的怪癖
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-22
    • 1970-01-01
    • 2013-03-06
    • 1970-01-01
    相关资源
    最近更新 更多