iPhone 中的 Adwhirl 集成问题

发布于 2024-11-30 04:29:52 字数 2720 浏览 2 评论 0原文

我的应用程序导航控制器和选项卡栏控制器中有两个控制器。导航控制器视图未实现 adwhirl,而选项卡控制器所有选项卡所有视图均已实现 adwhirl。

@interface myview : UIViewController {

AdWhirlView *awView; 
}
@property (nonatomic, retain) AdWhirlView *awView;


@implementation myview    
@synthesize awView;

- (UIViewController *)viewControllerForPresentingModalView {
return self;
}

- (NSString *)adWhirlApplicationKey {
return @"Mykey";
}

-(void) viewWillAppear:(BOOL)animated{
//  code for Adwhirl banner
self.awView = [AdWhirlView requestAdWhirlViewWithDelegate:self];
[self.awView setFrame:CGRectMake(0, 318, 320, 50)];
[self.view addSubview:self.awView];
}

-(void) viewWillDisappear:(BOOL)animated{
    [self.awView release];
}

我已经在标签栏控制器的每个视图中编写了这段代码。当我将导航控制器切换到标签栏控制器时,Adwhirl 完美工作。但是当我将选项卡栏控制器切换到导航控制器时,应用程序崩溃了。

崩溃错误如下。

由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“-[__NSCFArray viewControllerForPresentingModalView]:无法识别的选择器发送到实例 0xfd91600”

*** Call stack at first throw:
(
0   CoreFoundation                      0x018525a9 __exceptionPreprocess + 185
1   libobjc.A.dylib                     0x019a6313 objc_exception_throw + 44
2   CoreFoundation                      0x018540bb -[NSObject(NSObject)       doesNotRecognizeSelector:] + 187
3   CoreFoundation                      0x017c3966 ___forwarding___ + 966
4   CoreFoundation                      0x017c3522 _CF_forwarding_prep_0 + 50
5   IDogEvents                          0x0002e30b -[AdWhirlAdapterGoogleAdMobAds getAd] + 2075
6   IDogEvents                          0x00040154 -[AdWhirlView makeAdRequest:] + 1524
7   IDogEvents                          0x0003f501 -[AdWhirlView buildPrioritizedAdNetCfgsAndMakeRequest] + 1569
8   IDogEvents                          0x000402ef -[AdWhirlView timerRequestFreshAd] + 255
9   Foundation                          0x0095b749 __NSFireTimer + 125
10  CoreFoundation                      0x018338c3 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 19
11  CoreFoundation                      0x01834e74 __CFRunLoopDoTimer + 1220
12  CoreFoundation                      0x017912c9 __CFRunLoopRun + 1817
13  CoreFoundation                      0x01790840 CFRunLoopRunSpecific + 208
14  CoreFoundation                      0x01790761 CFRunLoopRunInMode + 97
15  GraphicsServices                    0x01a8a1c4 GSEventRunModal + 217
16  GraphicsServices                    0x01a8a289 GSEventRun + 115
17  UIKit                               0x001cbc93 UIApplicationMain + 1160
18  IDogEvents                          0x00002349 main + 121
19  IDogEvents                          0x000022c5 start + 53
20  ???                                 0x00000001 0x0 + 1

请帮助我。提前致谢。

I have two controllers in my application navigation controller and tabbar controller. Navigation controller view does not implement adwhirl and tabbar controller all tabs all view has adwhirl implemented.

@interface myview : UIViewController {

AdWhirlView *awView; 
}
@property (nonatomic, retain) AdWhirlView *awView;


@implementation myview    
@synthesize awView;

- (UIViewController *)viewControllerForPresentingModalView {
return self;
}

- (NSString *)adWhirlApplicationKey {
return @"Mykey";
}

-(void) viewWillAppear:(BOOL)animated{
//  code for Adwhirl banner
self.awView = [AdWhirlView requestAdWhirlViewWithDelegate:self];
[self.awView setFrame:CGRectMake(0, 318, 320, 50)];
[self.view addSubview:self.awView];
}

-(void) viewWillDisappear:(BOOL)animated{
    [self.awView release];
}

I have write this code in each view in tabbar controller. Adwhirl is perfectly work when i shift navigation controller to tabbar controller. But application is crashed when i shift tabbar controller to navigation controller.

The crash error is as follow.

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFArray viewControllerForPresentingModalView]: unrecognized selector sent to instance 0xfd91600'

*** Call stack at first throw:
(
0   CoreFoundation                      0x018525a9 __exceptionPreprocess + 185
1   libobjc.A.dylib                     0x019a6313 objc_exception_throw + 44
2   CoreFoundation                      0x018540bb -[NSObject(NSObject)       doesNotRecognizeSelector:] + 187
3   CoreFoundation                      0x017c3966 ___forwarding___ + 966
4   CoreFoundation                      0x017c3522 _CF_forwarding_prep_0 + 50
5   IDogEvents                          0x0002e30b -[AdWhirlAdapterGoogleAdMobAds getAd] + 2075
6   IDogEvents                          0x00040154 -[AdWhirlView makeAdRequest:] + 1524
7   IDogEvents                          0x0003f501 -[AdWhirlView buildPrioritizedAdNetCfgsAndMakeRequest] + 1569
8   IDogEvents                          0x000402ef -[AdWhirlView timerRequestFreshAd] + 255
9   Foundation                          0x0095b749 __NSFireTimer + 125
10  CoreFoundation                      0x018338c3 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 19
11  CoreFoundation                      0x01834e74 __CFRunLoopDoTimer + 1220
12  CoreFoundation                      0x017912c9 __CFRunLoopRun + 1817
13  CoreFoundation                      0x01790840 CFRunLoopRunSpecific + 208
14  CoreFoundation                      0x01790761 CFRunLoopRunInMode + 97
15  GraphicsServices                    0x01a8a1c4 GSEventRunModal + 217
16  GraphicsServices                    0x01a8a289 GSEventRun + 115
17  UIKit                               0x001cbc93 UIApplicationMain + 1160
18  IDogEvents                          0x00002349 main + 121
19  IDogEvents                          0x000022c5 start + 53
20  ???                                 0x00000001 0x0 + 1

Please help me for this.Thanks in advance.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

七堇年 2024-12-07 04:29:52

我得到了解决方案。
制作了通用对象

我为AdWhirlView *awView;

在应用程序委托中。
在每个视图中我都使用这个对象而不是自类对象。

-(void) viewWillAppear:(BOOL)animated{
//  code for Adwhirl banner
appDelegate.awView = [AdWhirlView requestAdWhirlViewWithDelegate:self];
[appDelegate.awView setFrame:CGRectMake(0, 318, 320, 50)];
[self.view addSubview:appDelegate.awView];
}

-(void) viewWillDisappear:(BOOL)animated{
    [appDelegate.awView removeFromSuperview];
}

在最终视图中我移动控制器。

-(void) viewWillDisappear:(BOOL)animated{
    [appDelegate.awView removeFromSuperview];
    [appDelegate.awView release];    
}

I got the solution.
I made common object for

AdWhirlView *awView;

in application delegate.
In every view i am using this object instead of self class object.

-(void) viewWillAppear:(BOOL)animated{
//  code for Adwhirl banner
appDelegate.awView = [AdWhirlView requestAdWhirlViewWithDelegate:self];
[appDelegate.awView setFrame:CGRectMake(0, 318, 320, 50)];
[self.view addSubview:appDelegate.awView];
}

-(void) viewWillDisappear:(BOOL)animated{
    [appDelegate.awView removeFromSuperview];
}

And in final view where i shift the controller.

-(void) viewWillDisappear:(BOOL)animated{
    [appDelegate.awView removeFromSuperview];
    [appDelegate.awView release];    
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文