我有一个标签栏驱动的应用程序。
该应用程序有一些 View Controller ,它们以通常的方式相互堆叠。 其中一些 View Controller 可能是顶级的——意味着直接从选项卡栏 Controller 实例化。它们的导航栏中没有“后退”按钮。
其中一些可以在调用堆栈中的许多点调用。这意味着它们可以从其他 View Controller 调用,而不是直接从选项卡栏调用。
我正在寻找一种聪明的方法来以编程方式确定当前 View Controller 当前在其导航栏中是否有“后退”按钮。 (如果没有,那么我想在那个地方显示一些其他的栏目。)
感谢任何提示。 :)
最佳答案
嗯...根据你的描述,我可以理解你有一个 UITabBarController
,每个选项卡中都有一个 View Controller 列表,每个 View Controller 都是一个导航 Controller ,这进一步导致到新的观点。您有兴趣了解某个特定 View 是第一个 View 还是第二个 View ,等等。
有趣的是,有一种方法可以做到这一点。导航 Controller 基本上是一个 viewController
数组, View 添加到 navigationController 的索引中。第一个 View 将在索引 0 中。如果您执行 pushViewController
,则 newViewController
将放置在索引 1 中。
只需检查该特定 View 的 self.navigationController
的索引计数。如果大于1,则可以确定不是初始 View 。
您还可以检查 backBarButtonItem
属性,但话又说回来,它可能并不需要。 viewControllers
数组计数应该可以。
关于iphone - 如何确定 ViewController 是否是顶级的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8235261/