0

私は解決策を探していましたが、同様の問題に対する答えは、私を正しい方向に導くものではありませんでした. 問題は次のとおりです

iOS アプリで、ナビゲーション コントローラーの上にカスタム イメージ ビューを作成します。これは、指定されたView Controllerから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' が原因でアプリを終了しています。

誰か助けてくれませんか?ここでトポロジ/継承に問題がある可能性がありますが、これを見つける簡単な方法が見つかりません..

前もって感謝します

4

1 に答える 1

1

何が問題の原因なのかはわかりませんが、ここには奇妙な構造がいくつかあります。

まず、通常、ボタンは UIImageViews に追加されません。代わりに、両方を共通のビューに追加してから、共通のビューを呼び出して-bringSubviewToFront:ボタンをイメージ ビューにオーバーレイします。

次に、セレクターは送信者を引数として受け取るため、選択は buttonPressed: で、メソッドは-(void)buttonPressed:(id)sender;

于 2013-09-23T01:18:46.370 に答える