选择 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
移动到viewWillAppear
或viewDidAppear
,它可能会起作用。
viewDidLoad
在第一次加载视图时被调用一次。然后,视图保留在内存中,当您再次点击选项卡栏项目时,它不会再次加载,因为它已经存在。听起来您想在每次视图出现时都这样做,因此 viewWillAppear
或 viewDidAppear
似乎更适合您的需求。
另外,可能更好的解决方案是实现 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