选择 UITabBar 项时打开另一个应用程序

Posted

技术标签:

【中文标题】选择 UITabBar 项时打开另一个应用程序【英文标题】:Open another app when selected a UITabBar Item 【发布时间】:2015-07-01 08:30:44 【问题描述】:

我对编程很陌生,我正在开发一个带有 UITabBarController 的应用程序

我想在选择其中一个选项卡栏项目时打开另一个应用程序。我将代码放在 viewDidLoad 中,当我启动应用程序并第一次单击 Tab Bar 项目时效果很好,但之后当我再次单击它而不重新启动应用程序时,什么也没有发生。

我尝试使用 tabBarController didSelectViewController 和 tabBar didSelectItem 来尝试解决这个问题。但似乎无法让他们工作。这是一个失败的原因,还是我只是错过了一些东西,或者没有把它们放在正确的地方?

代码:

-(void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController  
    if (tabBarController.selectedIndex == 2)  
        [[UIApplication sharedApplication] openURL: [NSURL URLWithString:@"mswxmedia://"]]; 
     

【问题讨论】:

需要显示你的代码 '-(void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController if (tabBarController.selectedIndex == 2) [[UIApplication sharedApplication] openURL: [NSURL URLWithString:@ "mswxmedia://"]]; ' 编辑你的问题并把它放在那里 我不确定我明白你的要求。 对不起,我的意思是你应该编辑你的问题并将代码放在那里而不是在 cmets 中,这样更容易阅读。 【参考方案1】:

没有看到你的代码很难给出一个好的答案,但我认为如果你将打开另一个应用程序的代码从viewDidLoad移动到viewWillAppearviewDidAppear,它可能会起作用。

viewDidLoad 在第一次加载视图时被调用一次。然后,视图保留在内存中,当您再次点击选项卡栏项目时,它不会再次加载,因为它已经存在。听起来您想在每次视图出现时都这样做,因此 viewWillAppearviewDidAppear 似乎更适合您的需求。

另外,可能更好的解决方案是实现 UITabBarControllerDelegate 并实现 tabBarController:shouldSelectViewController: 方法来检查将选择哪个 viewController 并从那里打开另一个应用程序。

【讨论】:

我有 -(void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController if (tabBarController.selectedIndex == 2) [[UIApplication sharedApplication] openURL: [NSURL URLWithString: @"mswxmedia://"]]; 作为我的代码,我在 2010 年看到的关于如何执行此操作的所有答案,因此不确定从那时起执行此操作的方式是否发生了变化。

以上是关于选择 UITabBar 项时打开另一个应用程序的主要内容,如果未能解决你的问题,请参考以下文章

如何将UITabBar嵌入故事板xcode中的另一个UITabBar

使用 UITableView 填充 UITabBar

单击另一个菜单项时如何切换菜单

如何判断 UITabBar 是不是从自定义视图打开?

Laravel Eloquent 从一个表中选择并在另一个表中有匹配项时加入第一行

用 UIToolBar 替换 UITabBar