- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 iPhone 应用程序,在手机上运行时运行良好,但在 iPad 上以兼容模式运行时启动时崩溃。我在我的项目中使用 iAd,特别是我正在使用
Bannerviewcontroller.h and .m
从 iAd 套件以编程方式呈现横幅。
在我的应用程序委托(delegate)中,我包装了一些 View Controller ,如下所示。
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
UIViewController *viewController1, *viewController2, *catVC3, *otherVC4;
UINavigationController *navController, *dognav, *catnav, *othernav;
viewController1 = [[FirstViewController alloc] initWithNibName:@"FirstViewController_iPhone" bundle:nil];
viewController2 = [[SecondViewController alloc] initWithNibName:@"SecondViewController_iPhone" bundle:nil];
catVC3 = [[catViewController alloc]initWithNibName:@"catViewController_iPhone" bundle:nil];
otherVC4 = [[otherViewController alloc]initWithNibName:@"otherViewController_iPhone" bundle:nil];
navController = [[UINavigationController alloc]initWithRootViewController:viewController1];
dognav = [[UINavigationController alloc]initWithRootViewController:viewController2];
catnav = [[UINavigationController alloc]initWithRootViewController:catVC3];
othernav = [[UINavigationController alloc]initWithRootViewController:otherVC4];
_tabBarController = [[UITabBarController alloc] init];
NSArray *controllers = [NSArray arrayWithObjects:navController,dognav,catnav,othernav,nil];
_tabBarController.viewControllers = controllers;
//wrap tabbar controller in adbanner controller
_bannerViewController = [[BannerViewController alloc] initWithContentViewController:_tabBarController];
self.window.rootViewController = _bannerViewController;
[self.window makeKeyAndVisible];
return YES;
然后崩溃就发生在我的
Bannerviewcontroller.m
#import "BannerViewController.h"
@implementation BannerViewController
{
ADBannerView *_bannerView;
UIViewController *_contentController;
}
- (id)initWithContentViewController:(UIViewController *)contentController
{
self = [super init];
if (self != nil) {
_bannerView = [[ADBannerView alloc] init];
_bannerView.delegate = self;
_contentController = contentController;
}
return self;
}
- (void)loadView
{
UIView *contentView = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
[contentView addSubview:_bannerView];
[self addChildViewController:_contentController];
[contentView addSubview:_contentController.view];
[_contentController didMoveToParentViewController:self];
self.view = contentView;
}
- (void)viewDidUnload
{
[super viewDidUnload];
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return [_contentController shouldAutorotateToInterfaceOrientation:interfaceOrientation];
}
- (void)viewDidLayoutSubviews
{
if (UIInterfaceOrientationIsPortrait(self.interfaceOrientation)) {
_bannerView.currentContentSizeIdentifier = ADBannerContentSizeIdentifierPortrait;
} else {
_bannerView.currentContentSizeIdentifier = ADBannerContentSizeIdentifierLandscape;
}
CGRect contentFrame = self.view.bounds;
CGRect bannerFrame = _bannerView.frame;
if (_bannerView.bannerLoaded) {
contentFrame.size.height -= _bannerView.frame.size.height;
contentFrame.origin.y = _bannerView.frame.size.height;
bannerFrame.origin.y = contentFrame.size.height - contentFrame.size.height;
} else {
bannerFrame.origin.y = contentFrame.size.height;
}
_contentController.view.frame = contentFrame;
_bannerView.frame = bannerFrame;
}
- (void)bannerViewDidLoadAd:(ADBannerView *)banner
{
[UIView animateWithDuration:0.35 animations:^{
[self.view setNeedsLayout];
[self.view layoutIfNeeded];
}];
}
- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error
{
[UIView animateWithDuration:0.35 animations:^{
[self.view setNeedsLayout];
[self.view layoutIfNeeded];
}];
}
@end
并抛出此异常:* 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“* -[__NSArrayM insertObject:atIndex:]:对象不能为 nil”
这是怎么回事?提前致谢!
最佳答案
该错误表明 _contentController
未初始化。你在哪里/如何分配它?我在 AppDelegate 代码中看不到它。
关于ios - "addChildViewController:"在 iPad 上崩溃,但在 iPhone 上则不然,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14221219/
我对 Objective-C 和 iOS 还很陌生,而且我已经接受了别人编写的应用程序。我注意到一些让我震惊的事情,我认为我的问题与人们提出的关于 addChildViewController 的其他
我正在尝试使用类似于 UINavigationController 的东西,以便我可以自定义动画。首先,我只是使用 Apple 库存动画。这是我的 containerViewController: -
我是第一次涉足 iOS 开发,我必须做的第一件事就是实现 custom container view controller - 让我们称它为 SideBarViewController - 交换它显示
iOS 5引入自定义容器 View Controller 的概念,并提供类似 addChildViewController 的 API .问题:您能否将 View Controller 添加为 sub
使用 Storyboard,我试图在当前 View 之上覆盖一个 UIViewController。 在我的 FirstViewController 中,我导入了 SecondViewControll
灵感来自 Scott Sherwood tutorial我在 UIViewController 中有一个 UIView,它通过自定义 segues 对不同的 UItableviewController
我正在使用下面的代码将 View 添加为addChildViewController。 VideoListVC * videoListVC = [[VideoListVC alloc] initWit
我刚刚观看了 2011 年 WWDC 上有关“实现 UIViewController Containment”的演示 ( here's a link to the video ) 他们提到了将 vie
我在使用 addChildViewController 实现顶部栏(如导航 Controller 栏,但自定义)时遇到问题。我在 .xib 文件中创建了这个栏,并添加了具有正确自动布局约束的按钮和图像
我刚开始使用这种方法,所以我可能完全错了,所以这是我的代码: @property (nonatomic, weak) ConverterViewController *converterViewCon
我正在处理一些需要重构的代码。一个 View Controller 充当两个其他 View Controller 的容器,并将在它们之间交换,如下面的代码所示。 这可能不是最好的设计。可能不需要以这种
我知道在 iOS 中可以通过三种方式更改 View 1. [self addChildViewController:thirdViewController]; [contentView addSubv
这两种方法都将 View 添加为父 View 的 subview ,并且 View 可以接收事件。什么时候使用哪一个? 最佳答案 这完全取决于您希望如何管理新的 subview 。如果您希望新的 su
我正在制作示例项目来实现顶级菜单。 下面是项目结构。 TopMenu 是父 View ,其结构如下所示。 在 TopViewController 中,下面的 viewDidLoad 是我拥有的。 NS
有没有人遇到过这个?以下代码在 iOS 4 模拟器上运行时报告"is",但根据 Apple 文档,方法 addChildViewController 仅在 iOS 5 及更高版本上可用。这似乎不是正确
我想使用与 addChildViewController 相同的功能,但对于版本 4.3(addChildViewController 仅在版本 5 中可用)。提前致谢。 最佳答案 虽然不建议这样做,
我正在尝试重用 this AdMobViewController class 我按照实现示例中的描述应用了它,看起来它工作正常,但我的 View 向上移动并且它现在位于操作栏下方的标题。你能告诉我如何
我有一个 iPhone 应用程序,在手机上运行时运行良好,但在 iPad 上以兼容模式运行时启动时崩溃。我在我的项目中使用 iAd,特别是我正在使用 Bannerviewcontroller.h an
我在Apple上看到这个方法的描述 func addChildViewController(_ childController: UIViewController) This method is on
我有一个类似于模态视图 Controller 的东西,我需要在其他 View Controller 上方显示它。我没有使用常规模式 Controller 功能(presentViewControlle
我是一名优秀的程序员,十分优秀!