Мое приложение имеет контроллер панели вкладок, один из элементов вкладки - контроллер разделенного представления.Его главный контроллер вида (т. Е. С индексом 0) является навигационным контроллером, загружаемым из пера, из-за его пользовательской навигационной панели.
Если это звучит немного неясно, то это всего лишь комбинация 1) невозможность добавить SVC в TBC в IB и 2) ошибка iOS 4.2 splitview-navbar-colorTint .И действительно, только после вчерашнего решения этой проблемы у меня возникла проблема с предупреждением о нехватке памяти.
До временного решения я устанавливал SVC с двумя контроллерами навигации и программно добавлял его в TBC (Из-за ограничений IB с панелью вкладок th) и без проблем - ну, за исключением этой ошибки Apple.
Небольшая демонстрационная версия обходного пути также работает отлично, даже после предупреждений о нехватке памяти.Но это не связано с дополнительными накладными расходами панели вкладок.
Но в моей адаптации обходного демо все начинает становиться грушевидным.Отправьте предупреждение о нехватке памяти, пока отображается разделенный вид, и вся левая сторона (основной вид) исчезает.Поведение идентично на устройстве, фактически я впервые обнаружил его там.
Я озадачен тем, что происходит.Представление на дисплее (корневое представление nav cont) управляется подклассом табличного представления.Я переопределил didReceiveMemoryWarning, но это не помогает.Кроме того (соответственно!), Супервизия не равна нулю.Это UITableView.Совершенно верно.
Итак, я думаю, что навигационный контроллер выпускается?Но где?А почему не в оригинальной демоверсии?Разница теперь в добавлении моего контроллера панели вкладок.Вот мой код, который добавляет его на панель вкладок:
- (void) addTabItemSplitViewWithNavConRoot:(BOOL)hasRootNC {
// init master/detail views
SV1RootViewController *rvc = [[SV1RootViewController alloc] initWithNibName:@"SVC1RootView" bundle:nil];
SV1DetailViewController *dvc = [[SV1DetailViewController alloc] initWithNibName:@"SVC1DetailView" bundle:nil];
rvc.detailViewController = dvc;
UINavigationController *nc = nil;
if (hasRootNC) {
nc = [self.pSVC1.viewControllers objectAtIndex:0];
nc.viewControllers = [NSArray arrayWithObjects:rvc, nil];
nc.navigationBar.tintColor = [UIColor redColor];
} else {
nc = nil;
}
UIViewController *vc = (hasRootNC)? (UIViewController*)nc :rvc;
UISplitViewController *svc = [self newSplitViewControllerWithMasterVC:vc detailVC:dvc];
svc.delegate = dvc;
// init the tab bar item
svc.tabBarItem = [[UITabBarItem alloc] initWithTitle:(hasRootNC)? @"SplitView with Nav Root":@"Simple SplitView"
image:nil
tag:0];
// int the split view
NSMutableArray *controllersArray = [NSMutableArray arrayWithArray:self.pTabBarController.viewControllers];
[controllersArray addObject:svc];
[self.pTabBarController setViewControllers:controllersArray];
// cleanup
[nc release];
[rvc release];
[dvc release];
[svc release];
}
- (UISplitViewController*) newSplitViewControllerWithMasterVC:(UIViewController*)masterView
detailVC:(UIViewController*)detailView {
UISplitViewController *svc = [[UISplitViewController alloc] init];
NSMutableArray *controllersArray = [NSMutableArray arrayWithObjects:masterView, detailView, nil];
[svc setViewControllers:controllersArray];
return svc;
}
У кого-нибудь есть идеи для меня, пожалуйста?:)
Это сводит меня с ума !!!