2013-07-16 83 views
0

我一直在嘗試搜索解決方案,但類似問題的答案並沒有完全指向正確的方向。問題如下由於未捕獲的異常'NSInvalidArgumentException'而終止應用程序,原因:' - [UIViewControllerWrapperView buttonPressed]:

在我的iOS應用程序中,我創建了一個自定義圖像視圖頂部的我的導航控制器。這是通過從指定視圖控制器的alloc初始化BannerView類來完成的

例如,在我MasterViewController的viewDidLoad中我叫

BannerView *bannerLogoView = [[BannerView alloc]init]; 
//add the tabcotroller as a subview of the view 
[self.tabBarController.view addSubview:bannerLogoView.bannerView]; 

BannerView.m

#import "BannerView.h" 

@interface BannerView() 

@end 


@implementation BannerView 


-(id)init { 

self = [super init]; 

if (self) { 

    self.imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"bannerImage.jpg"]]; 
    self.bannerView = [[UIView alloc] initWithFrame:CGRectMake(0,20, 320, 30)]; 
    [self.bannerView addSubview:self.imageView]; 
    //NSLog(@"Setting up image from within banner view"); 
    [self setupButton]; 



} 
return self; 

} 

- (void)buttonPressed { 
NSLog(@"Button pressed"); 
} 


-(void) setupButton { 
self.imageView.userInteractionEnabled = YES;  
self.button= [UIButton buttonWithType:UIButtonTypeRoundedRect]; 

[self.button addTarget:self action:@selector(buttonPressed) forControlEvents:UIControlEventTouchUpInside]; 

self.button.frame = CGRectMake(0.0, 0.0, 320.0, 30.0); 
[self.imageView addSubview:self.button]; 


} 

現在,只要點擊按鈕時,我得到EXC_BAD_ACCESS要麼沒有控制檯輸出,或 終止應用程序由於未捕獲的異常「NSInvalidArgumentException」 ,原因:' - [UIViewControllerWrapperView buttonPressed]:無法識別的選擇器發送到實例

任何人都可以幫我嗎?我可能是在這裏做一些錯誤的拓撲/繼承,但我無法找到一個簡單的方法來發現這一點..

預先感謝您

回答

1

不知道是什麼導致你的問題,但你確實有一些奇怪的構造在這裏。

首先,通常不會將按鈕添加到UIImageViews。相反,將它們添加到通用視圖,然後調用通用視圖的-bringSubviewToFront:以將按鈕覆蓋到圖像視圖上。

其次,選擇器將發件人作爲參數,所以您的選擇應該是buttonPressed:並且方法應該是-(void)buttonPressed:(id)sender;

相關問題