Я сделал простое приложение, которое состоит из главного окна с навигацией по вкладкам, где каждая вкладка имеет свой собственный контроллер навигации.
Я могу переключать вкладки и видеть первый или второй вид в зависимости от выбранной вкладки.
Теперь я добавляю новое окно (StartupView) со своим собственным контроллером навигации (startupNavigationController).
В приложении-делегате главного окна / приложения я представляю окно запуска следующим образом:
@implementation NavigationCrapAppDelegate
@synthesize window=_window;
@synthesize tabBarController=_tabBarController;
@synthesize firstTabNavigationController;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[self.window addSubview:self.tabBarController.view];
[self.window makeKeyAndVisible];
StartupViewController *sv = [[StartupViewController alloc] init];
[[firstTabNavigationController topViewController] presentModalViewController:sv animated:NO];
[[firstTabNavigationController topViewController] dismissModalViewControllerAnimated:YES];
[sv release];
return YES;
}
Сразу после его показа я его снова удалю (для простоты, обычно этопроизойдет после события).
Теперь приложение запускается, показывает и скрывает startupWindow и снова показывает основное основное окно с tabnavigation.Однако есть одно отличие.Перед добавлением и удалением модального окна запуска я смог переключиться на другую вкладку, теперь приложение будет прерываться при переключении вкладок.
Я получаю сообщение «EXC_BAD_ACCESS» в main.c.Я понятия не имею, к чему он пытается получить доступ (что могло быть случайно выпущено за это время?).
Снимок экрана дерева проекта: http://www.roderik.net/xcode-tabs.png
Я получаю следующую обратную трассировку (с командой bt):
#0 0x00f2809f in objc_msgSend ()
#1 0x0290c1a7 in WebCore::failedToStartServiceErrorMessage ()
#2 0x0003d695 in +[UIWindow _hitTestToPoint:pathIndex:forEvent:] ()
#3 0x0001d709 in _UIApplicationHandleEvent ()
#4 0x00ffb992 in PurpleEventCallback ()
#5 0x00da3944 in __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ ()
#6 0x00d03cf7 in __CFRunLoopDoSource1 ()
#7 0x00d00f83 in __CFRunLoopRun ()
#8 0x00d00840 in CFRunLoopRunSpecific ()
#9 0x00d00761 in CFRunLoopRunInMode ()
#10 0x00ffa1c4 in GSEventRunModal ()
#11 0x00ffa289 in GSEventRun ()
#12 0x00022c93 in UIApplicationMain ()
#13 0x00001e89 in main (argc=1, argv=0xbffff040) at main.m:14
Файлы проекта: http://www.roderik.net/NavigationCrap.zip