我有一个Storyboard Xcode项目,我正在努力将选项卡的顺序放在Tabbar中。其中有4个标签。
CurrentLocationViewController, LocationsViewController, MapViewController and AnimalsViewController
我有一个Sqlite数据库,可以连接我项目中的3个选项卡。位置,标签和地图。
然后我有一个Tab,它与我项目中的其他3个选项卡完全分开。
我希望AnimalsViewController或Animals选项卡成为我应用中的第一个标签。我可以将它添加为我的第4个tabbar项目没有问题但是当我将订单更改为我的界面构建器中的第一个时,我的应用程序崩溃了。
我可以轻松更改标签,位置和地图的顺序,但是当我在开头介绍Animal标签时它会崩溃。
“标记”,“位置”和“地图”选项卡已互连,“动物”标签与其完全分开。
我知道我必须在下面的代码中引用我的AppDelegate中的选项卡并包含AnimalsViewController.h,但我试图无济于事。
以下是我的代码,图片和错误日志。
2013-04-08 16:38:08.075 ShotPlacementGuide[5077:c07] -[AnimalsViewController viewControllers]: unrecognized selector sent to instance 0xae8dc90
2013-04-08 16:38:08.077 ShotPlacementGuide[5077:c07] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[AnimalsViewController viewControllers]: unrecognized selector sent to instance 0xae8dc90'
*** First throw call stack:
(0x24a9012 0x1c5ce7e 0x25344bd 0x2498bbc 0x249894e 0x2443 0xb01157 0xb01747 0xb0294b 0xb13cb5 0xb14beb 0xb06698 0x1fc9df9 0x1fc9ad0 0x241ebf5 0x241e962 0x244fbb6 0x244ef44 0x244ee1b 0xb0217a 0xb03ffc 0x222d 0x2155)
libc++abi.dylib: terminate called throwing an exception
(lldb)
这是我的代码:
UITabBarController *tabBarController = (UITabBarController *) self.window.rootViewController;
UINavigationController *navigationController = (UINavigationController *) [[tabBarController viewControllers] objectAtIndex:0];
CurrentLocationViewController *currentLocationViewController = (CurrentLocationViewController *) [[navigationController viewControllers] objectAtIndex:0];
currentLocationViewController.managedObjectContext = self.managedObjectContext;
navigationController = (UINavigationController *) [[tabBarController viewControllers] objectAtIndex:1];
LocationsViewController *locationsViewController = (LocationsViewController *) [[navigationController viewControllers] objectAtIndex:0];
locationsViewController.managedObjectContext = self.managedObjectContext;
MapViewController *mapViewController = (MapViewController *) [[tabBarController viewControllers] objectAtIndex:2];
mapViewController.managedObjectContext = self.managedObjectContext;
答案 0 :(得分:1)
要在标签栏控制器中交换第一个和第四个视图控制器,请使用以下代码:
UITabBarController *tabBarController = (UITabBarController *) self.window.rootViewController;
NSMutableArray* viewControllers = [[tabBarController viewControllers] mutableCopy];
[viewControllers exchangeObjectAtIndex:0 withObjectAtIndex:3];
[tabBarController setViewControllers:viewControllers];