つまり、StackOverflow に関する別の EXC_BAD_ACCESS トピックですが、私は Objective-C を初めて使用するので、これはまだよく理解していないトピックです。私はすでにそれについて多くの研究を行ってきましたが。
問題は以下です。カスタムクラス( MultiSelectViewUIScrollView
という名前)を使用して上書きしたものがあります。ユーザーがこれをタップすると、データを選択できるビューが開きます。UIScrollView
そのため、メソッドUITapGestureRecognizer
を呼び出すa を宣言しました。openMultiSelect:
しかし、行[parent.navigationController pushViewController:view animated:YES];
でProgram received signal: "EXC_BAD_ACCESS".
エラーが発生します。なになになに?
- (id) initWithCoder:(NSCoder *) coder {
self = [super initWithCoder: coder];
if (self) {
// Add a Tap Gesture Recognizer to the Scrollview.
// If the user taps the view, it triggers the 'openMultiSelect' method.
UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(openMultiSelect:)];
[singleTap setNumberOfTapsRequired:1];
[singleTap setNumberOfTouchesRequired:1];
[self addGestureRecognizer:singleTap];
}
return self;
}
- (void)openMultiSelect:(UIGestureRecognizer *)gesture {
//int myViewTag = gesture.view.tag; // now you know which view called
DataSelectView *view = [[DataSelectView alloc] initWithNibName:@"DataSelectView" bundle:[NSBundle mainBundle]];
view.allowMultiSelect = YES;
[parent.navigationController pushViewController:view animated:YES];
[view release];
}
表示されるのは、タブを含むViewControllerparent
です。これを行うより良い方法はありますか?今のところ、タブを含む ViewController があるためです。そのactivateTab:
メソッドでは、このようにタブを作成して渡しますself
。カスタムviewDidLoad
に渡すために、そのタブで同じことを行います。parent
UIScrollView
- (void) activateTab:(int)index {
... code ...
self.tab_Basic = [[TabBasic alloc] initWithNibName:@"TabBasic" bundle: [NSBundle mainBundle]];
self.tab_Basic.parent = self;
... code ...
}