UIViewController 在 UITabBar 中执行的操作并切换回原始视图

Posted

技术标签:

【中文标题】UIViewController 在 UITabBar 中执行的操作并切换回原始视图【英文标题】:Action performed by UIViewController in UITabBar and Switched Back to Original View 【发布时间】:2009-12-03 23:20:46 【问题描述】:

有一个带有 3 个视图控制器子视图的 UITabBarController。 应用程序的默认子视图是 viewOne(带有 viewControllerOne)。另外两个是 viewTwo 和 viewThree,它们在 UITabBar 中的顺序与预期一致。

我的目标是在 viewOne 处于活动状态时在 UITabBar 中选择 viewTwo 时执行操作。

The viewTwo view is never shown but instead, when viewTwo is selected, an action is performed in viewTwoController, the UITabBar then shows viewOne as selected and the orignal view is shown again.

第二个槽中的 UITabBarItem 必须与 viewTwo nib 保持关联。

是否可以将 UITabBarItem 与其视图控制器中的动作相关联,并在完成该动作后,指示其父 UITabBarController 切换到不同的视图?

【问题讨论】:

【参考方案1】:

UITabBarControllerDelegate 有一个名为 tabBarController:shouldSelectViewController 的方法,当标签切换被触发时,您可以覆盖该方法以执行您想做的任何事情。

这是文档:http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UITabBarControllerDelegate_Protocol/Reference/Reference.html#//apple_ref/occ/intfm/UITabBarControllerDelegate/tabBarController:shouldSelectViewController:

【讨论】:

我仍然希望视图控制器中的代码能够执行,所以这无济于事。 1)默认选择View1 2)选择View2 3)View2Controller中的代码执行4)当View2Controller中的代码完成后,再次打开View1。 在 OS 3.x 上,您可以使用选项卡控制器的 selectedViewController 在 View2 中完成后以编程方式强制选择您的 View1 Setting ((UITabBarController *)self.parentViewController).selectedIndex = 0 in a selector in viewControllerTwo 选择对应于 UITabBarController 栏上 viewControllerOne 的选项卡,但视图似乎为空白。我知道视图与视图控制器相关联,因为我通过查看此控制器来启动应用程序。什么会导致选项卡被选中但视图不显示?如果我改为设置 selectedViewController 属性并引用 UITabBarController 的 viewController NSArray,我会得到相同的结果。救命! ***.com/questions/1297658/…

以上是关于UIViewController 在 UITabBar 中执行的操作并切换回原始视图的主要内容,如果未能解决你的问题,请参考以下文章

设置选定的标签栏项目色调?

来自应用委托的 presentModalViewController

iOS didSelectTabBarItem 知道之前选择了啥项目

如何在其他 UIViewController 中显示 UIViewController?

如何在通用 UIViewController 之后设置自定义 UIViewController?

iOS:如何在弹出其子 UIViewController 后“刷新” UIViewController?