iOS:如何选择 UITabBar 中的特定选项卡和此选项卡中的特定行

Posted

技术标签:

【中文标题】iOS:如何选择 UITabBar 中的特定选项卡和此选项卡中的特定行【英文标题】:iOS: How to select specific tab in UITabBar and specific row in this tab 【发布时间】:2014-04-03 07:03:17 【问题描述】:

我正在创建一个带有一些推送通知的应用程序。我在AppDelegate 中处理此通知(如果应用程序已经启动,我使用- (void) application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo ),如果我想从推送通知启动我的应用程序,我应该使用

UILocalNotification *notification = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];

if (notification)

    //Some code

如果应用收到一些新消息,我的推送通知会被调用。在"Some code" 部分,我想在我的标签栏中打开特定的标签(默认情况下TabBarController.selectedIndex 设置为3)。我希望打开第一个选项卡并打开新添加的最新消息(选项卡 1 是带有一些行的 UITableView)。

我该怎么办?我真的不知道该怎么办。提前致谢。

【问题讨论】:

你试过UITabBarController的“setSelectedIndex”方法吗?设置所需的索引(选项卡)?根据您收到的通知内容。 以及 "- (void)scrollToRowAtIndexPath:(NSIndexPath *)indexPath atScrollPosition:(UITableViewScrollPosition)scrollPosition animated:(BOOL)animated;" 用于导航到所需的 tableview 单元格。 如果我的应用程序处于最小化状态,@PoojaM.Bohora setSelectedIndex 将无法工作。如果应用程序已关闭而不是最小化,它可以工作。而且我想显示新闻详细信息(执行选择我的行)而不是滚动到它的位置。 【参考方案1】:

在 AppDelagate DidReceiveRemoteNotification 中

- (void)application:(UIApplication*)application didReceiveRemoteNotification:(NSDictionary*)userInfo

    UITabBarController *tabBarController = (UITabBarController *)self.window.rootViewController;
    [tabBarController setSelectedIndex:0];

    YourTab1ViewController *tab1Controller = (YourTab1ViewController *)tabBarController.selectedViewController;

    [tab1Controller reloadYourTableViewWithNewData];

您的 Tab1ViewController 必须包含 reloadYourTableViewWithNewData 方法。此方法必须获取新数据并重新加载您的 tableview。

【讨论】:

很好的答案,谢谢。但是如何以编程方式选择某些行并将其添加到当前 UINavigationController。每个选项卡都有自己的导航控制器。 选择某行并将其添加到当前 UINavigationController 是什么意思。你能再解释一下吗 对不起我的英语,下面的截图会解释更多。 s9.postimg.org/j3jgppcgf/2014_04_03_13_35_25_1.png 首先用[tabBarController setSelectedIndex:0]打开tab1ViewController;并在 Tab1Viewcontroller 和 [self.tableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] animated:NO scrollPosition:UITableViewScrollPositionNone] 中向 tableview 添加新行;新数据行将选择 除了选择第一个标签栏之外什么都没有发生。尚未选择该行。我制作的代码UIStoryboard *iPhoneSB = [UIStoryboard storyboardWithName:@"Main_iPhone" bundle:nil]; NewsTableViewController *destVC = (NewsTableViewController *)[iPhoneSB instantiateViewControllerWithIdentifier:@"NewsTableViewController"]; tbc.selectedViewController = [tbc.viewControllers objectAtIndex:0]; [destVC.tableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:1 inSection:0] animated:NO scrollPosition:UITableViewScrollPositionNone];

以上是关于iOS:如何选择 UITabBar 中的特定选项卡和此选项卡中的特定行的主要内容,如果未能解决你的问题,请参考以下文章

如何链接到标签栏控制器中的特定标签

如何不让按钮仅在 UITabBar 的 5 个选项卡中的 3 个中显示 UINavigationBar?

仅自动旋转 UITabBar 内的一些选项卡? (iOS 5)

UITabbar 以编程方式选择选项卡并执行egue

将 UITabBarItem 添加到 UIViewController 中的 UITabBar

UITabBar 选择的选项卡在启动时不会改变色调颜色