【问题标题】:iPhone Development, How to Programmatically Call a NavigationController back button from another tab?iPhone 开发,如何以编程方式从另一个选项卡调用 NavigationController 后退按钮?
【发布时间】:2010-07-15 17:51:53
【问题描述】:

设置如下:

我有一个带有两个标签的标签栏控制器。第二个选项卡顶部有一个导航控制器,因此我可以从表格中查看详细信息。

在标签 #1 上,我有一个按钮。按下此按钮时,它将选定的选项卡切换到选项卡#2。

我的问题是:假设我转到标签 #2,然后从表中选择一行以查看详细信息。然后,我没有点击“返回”按钮返回基本视图,而是选择了 tab#1。然后我按下我的按钮。 Tab#2 加载,但它仍然显示详细视图,而不是我想要的表格视图。

我知道如何以编程方式按下按钮。
[self.navigationController popViewControllerAnimated:YES];

但是当按钮按下的方法在 tab#1 的类中时,我该怎么做呢,它对 tab#2 的导航控制器一无所知?

希望这是有道理的。提前感谢您的帮助!


好的,我终于让它工作了。建议的解决方案给了我一个很好的起点。这是最终对我有用的代码:

ARFinderAppDelegate appDelegate = (ARFinderAppDelegate)[[UIApplication sharedApplication] delegate];

[appDelegate.booksNavigationController popViewControllerAnimated:YES]; self.tabBarController.selectedIndex = 1;


我必须通过我的应用程序委托的实例来访问包含 NavigationController 的类。我还必须删除“objectAtIndex:1”,因为我的应用程序会崩溃。

感谢大家的帮助,对于这位 iPhone 开发新手来说,这是一次很棒的学习体验!

【问题讨论】:

    标签: iphone uinavigationcontroller uitabbarcontroller


    【解决方案1】:

    使用您的委托单例。

    [[delegate.tabBarController.viewControllers objectAtIndex:tab2Index] popViewControllerAnimated:YES];
    

    【讨论】:

    • "delegate" 似乎不是关键字,我收到一个未定义的错误。如果我尝试改用“self.delegate”,我会收到另一个错误:对成员“代表”的请求不是结构或联合。我知道我一定错过了一些简单的东西,我对这一切都很陌生。你能帮帮我吗?谢谢!
    • 您的应用程序委托就是我所指的。在“YourAppDelegate”所在的位置插入您的 appdelegate 文件的名称。(这是带有 applicationDidFinishLaunching: 的文件,可能是您的标签栏控制器的逻辑。YourAppDelegate *delegate = [[UIApplication sharedApplication] delegate]; 在前面上面给出的行。
    猜你喜欢
    • 2019-12-31
    • 2014-07-07
    • 2011-12-03
    • 1970-01-01
    • 1970-01-01
    • 2011-03-18
    • 1970-01-01
    • 2022-11-22
    • 2014-11-30
    相关资源
    最近更新 更多