2012-04-11 11 views
2

私はいくつかのボタンでビューを保持するnavigationControllerを持っていますが、ボタンを押すとEXC_BAD_ACCESSエラーが発生します。私はターゲットが正しく設定されているので、私が間違っていることを考えることができません。ボタンがプログラムで追加されるかIBによって追加されるかは、クラッシュします。UIButton touch on touch

ボタンのコード:

UIButton *reportsButton = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
reportsButton.frame = CGRectMake(20, 100, 100, 50); 
[reportsButton setTitle:@"Reports" forState:UIControlStateNormal]; 
[reportsButton addTarget:self action:@selector(reportsButtonTouched:) forControlEvents:UIControlEventTouchUpInside]; 

ファンクションボタンがアクセスしようとしている:

- (void)reportsButtonTouched:(id)sender 
{ 
    NSLog(@"working"); 
} 

エラー:ボタンがアクセスしようとしている

int main(int argc, char *argv[]) 
{ 
    @autoreleasepool { 
     return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); //EXC_BAD_ACCESS code=1 
} 

関数が存在します。

NavigationControllerの機能について私が気づいていないことがあるかもしれませんが、問題なく前にこれを行っています。

お返事ありがとう、私は本当に前にこのサイトから得た助けに感謝します。

EDIT:これは私のAppDelegates didFinishLaunching incaseで、何らかの形で役立ちます。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
    // Override point for customization after application launch. 
    UIViewController *homevc = [[HomeViewController alloc] initWithNibName:@"HomeViewController" bundle:nil]; 

    UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:homevc]; 

    [self.window addSubview:nav.view]; 
    [self.window makeKeyAndVisible]; 
    return YES; 
} 
+0

ブレークポイントを入れて、どこでクラッシュするのかを教えてください –

+0

どこに置くべきですか?ボタンが押されるとアプリケーションがクラッシュし、残りのコードは他のさまざまなUIのものをサブビューに追加するだけです。 – NinjaLikesCheez

答えて

1

このエラーも発生していました。私はSpriteKitを使ってプログラミングしていましたが、私のボタンを特定の方法で実装していましたが、フレームワークを使用しないようになったときに、突然実行したすべてのボタンがアクセスエラーを引き起こしていました。

didMoveToViewを使用していたため、私はviewDidLoadのボタンを初期化していたことがわかりました。私は誤って同じ関数として扱いました(実際にはviewDidLoadを実際には把握していませんそうです)。

しかし、私はこれやったとき:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{ 
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
if (self) 
{ 
    // Custom initialization 
    [self addButton]; 

} 
return self; 
} 


- (void)addButton 
{ 
UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 45, 45)]; 

[button setTitle:@"CLICK" forState:UIControlStateNormal]; 


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

[self.view addSubview:button]; 
} 

- (void)buttonPressed:(UIButton *)button 
{ 
    NSLog(@"WORKED"); 
} 

をすべてがうまく働いた...だからそれでも問題が解決しない場合は、以下のことを試してみてください。 幸運を祈る!

+0

ありがとう、これはしばらく前に、私はそれを動作させるために何をしたのか覚えていません! – NinjaLikesCheez

4

コード内に何も問題がないようです。 Use this tutorialすべての例外に対してXcodeを中断させます。これは、メインにクラッシュするのではなく、あなたを「犯罪の場面」に近づけるでしょう。

+0

これから、ありがとう! – NinjaLikesCheez