Итак, еще одна тема EXC_BAD_ACCESS о StackOverflow, но, поскольку я новичок в Objective-C, это все еще тема, которую я еще не совсем понял.Хотя я уже провел много исследований по этому поводу.
Проблема заключается в следующем.У меня есть UIScrollView
, который я переписал с помощью пользовательского класса (с именем MultiSelectView ).Если пользователь нажимает на UIScrollView
, а затем я хочу открыть представление, позволяющее ему выбрать некоторые данные.
Итак, я объявил UITapGestureRecognizer
, который вызывает метод 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];
}
Итак, parent
, который вы видите, является ViewController, который содержит вкладку.Есть лучший способ сделать это?Потому что сейчас у меня есть 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 ...
}