在UITabBar的委托中,覆盖
- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item
Run Code Online (Sandbox Code Playgroud)
并在NSUserDefaults中存储项目的索引.下次您的应用程序启动时,从那里读取它,并将其重新设置为被选中.像这样的东西:
- 首先,你要为你的UITabBar设置一个委托,如下所示:
tabBarController.delegate = anObject;
Run Code Online (Sandbox Code Playgroud)
-in anObject,覆盖didSelectItem:
- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item
{
NSUserDefaults *def = [NSUserDefaults standardUserDefaults];
[def setInteger: [NSNumber numberWithInt: tabBarController.selectedIndex]
forKey:@"activeTab"];
[def synchronize];
}
Run Code Online (Sandbox Code Playgroud)
请注意,您保存NSNumber,因为int值无法直接序列化.当您再次启动应用程序时,它将读取并设置默认值中的selectedIndex值:
- (void)applicationDidFinishLaunchingUIApplication *)application {
NSUserDefaults *def = [NSUserDefaults standardUserDefaults];
int activeTab = [(NSNumber*)[def objectForKey:@"activeTab"] intValue];
tabBarController.selectedIndex = activeTab;
}
Run Code Online (Sandbox Code Playgroud)
UPDATE
In the UITabBarControllerDelegate's Delegate, overwrite
Run Code Online (Sandbox Code Playgroud)
目标C.
- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController
{
NSLog(@"%lu",self.tabBarController.selectedIndex);
return YES;
}
In this delegate method you will get last selected index.
Run Code Online (Sandbox Code Playgroud)
Swift 3.2
func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool
{
print("%i",tabBarController.selectedIndex)
return true
}
Run Code Online (Sandbox Code Playgroud)