1 iphone objective-c uitabbarcontroller
我想知道如何识别标签栏中的项目?
我有一个包含NAvigationController的tabBarController,如下所示:
NSMutableArray *localViewControllersArray = [[NSMutableArray alloc] initWithCapacity:6];
Run Code Online (Sandbox Code Playgroud)
每个navigationController都在这个数组中.
我使用以下方法管理每个标签栏项目中的操作:
- tabBarController:(UITabBarController*)tabBarController didSelectViewController:(UIViewController*)viewController
Run Code Online (Sandbox Code Playgroud)
而我在这种方法中,即:
if (viewController == [self.tabBarController.viewControllers objectAtIndex:0])
Run Code Online (Sandbox Code Playgroud)
像这样我识别我点击的标签栏项目.
但问题是你可以编辑iphone屏幕中的Tabbar(因为数组中有6个viewControllers初始化tabbar)然后,我使用的方式不正确,因为我可以改变viewcontrollers的位置在我使用此编辑工具时在标签栏中.
谢谢
您可以使用UITabBarItem's标签属性为每个UITabBarItem标识符赋予唯一的数字标识符,然后进行比较.
例:
#define FirstViewController 1
#define SecondViewController 2
switch ([[viewController tabBarItem] tag]) {
case FirstViewController:
//the user selected your first view controller, no matter where it is on the tabbar
break;
case SecondViewController:
break;
... etc
}
Run Code Online (Sandbox Code Playgroud)
您可以记住指向每个指针的指针navigationControllers,并将这些指针与viewController参数进行比较.
例:
//during your initial setup of the tabBarController:
UIViewController * firstViewController = //The view controller in the first tab
UIViewController * secondViewController = //The view controller in the second tab
...
if (viewController == firstViewController) {
...
} else if (viewController == secondViewController) {
...
}
Run Code Online (Sandbox Code Playgroud)
您可以禁止编辑UITabBarController(传递空数组或nil控制器的customizableViewControllers属性).
例:
[myTabBarController setCustomizableViewControllers:nil];
Run Code Online (Sandbox Code Playgroud)