У меня есть контроллер представления, который имеет UITextField в элементе навигации. Этот контроллер представления также является делегатом для поля uitext и поэтому реализует -(BOOL)textFieldShouldBeginEditing:(UITextField *)textField
.
Но внутри этого метода есть небольшая проблема. Когда я хочу использовать какие-либо глобальные свойства для этого класса, все они равны нулю, у меня это выглядит так:
- (id) initWithCoder:(NSCoder *)aDecoder {
self = [super initWithCoder:aDecoder];
if(self){
FirstViewController *lvc = [[FirstViewController alloc] initWithNibName:@"FirstView" bundle:nil];
SecondViewController *mvc = [[SecondViewController alloc] initWithNibName:@"SecondView" bundle:nil];
ThirdViewController *lsc = [[ThirdViewController alloc] initWithNibName:@"ThirdView" bundle:nil];
FourthViewController *fvc = [[FourthViewController alloc] initWithNibName:@"FourthView" bundle:nil];
FifthViewController *svc = [[FifthViewController alloc] initWithNibName:@"FifthView" bundle:nil];
viewControllers = [[NSArray alloc] initWithObjects:lvc, mvc, lsc, fvc, svc, nil];
lastIndex = 0;
isLogged = NO;
[lvc release]; [mvc release]; [lsc release]; [fvc release]; [svc release];
}
return self;
}
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField{
SearchView *searchView = [[SearchView alloc] initWithNibName:@"SearchView" bundle:nil andTextField:textField];
// I need to set up delegate here
// [searchView setDelegate:[viewControllers objectAtIndex:0]];
// but viewControllers is nil in here
AppDelegate *delegate = [[UIApplication sharedApplication] delegate];
[delegate.navigationController pushViewController:searchView animated:YES];
delegate = nil;
[searchView release];
return NO;
}
Как объяснено в коде, массив viewControllers равен nil в методе textFieldShouldBeginEditing, и поэтому я не могу установить делегат, где мне нужно ... Почему свойства там отсутствуют? Можно ли это как-нибудь исправить?
Спасибо.