【问题标题】:Reloading a view when back button is clicked from uinavigationbar从 uinavigationbar 单击后退按钮时重新加载视图
【发布时间】:2009-05-09 08:15:28
【问题描述】:

应用程序显示有关行星、它们的卫星等的信息。它显示行星列表,让用户选择一个行星并查看其详细信息,然后将其加入书签/取消书签。我有一个向用户显示所选行星详细信息的视图,它还包含一个添加/删除书签按钮。如果用户单击该按钮,则添加/删除该书签,并将另一个视图推送到当前视图之上,以告知用户该书签已被删除。

现在的问题是,当用户单击状态视图上显示的导航栏左侧的后退/行星详细信息按钮并返回行星详细信息视图时,仍会显示添加/删除(以之前显示的为准)按钮,而现在应该根据我编写的代码删除/添加(根据先前加载的按钮)。

我能理解的是,当用户单击后退按钮时,不会重新加载上一个视图,只会弹出状态视图。有没有办法让应用程序运行 setNeedsDisplay 或当用户单击状态视图上的后退按钮时可以重新加载书签详细信息 viewDidLoad 代码的方法?

或者还有其他可能的解决方案吗?

这让用户非常困惑,因为他认为他只是删除/添加了书签,但按钮仍然要求他添加/删除...

代码的其他部分也使用该状态视图向用户显示操作的结果,因此我无法更改其代码,或者我可以检查其中的前一个视图,检查它是否是行星详细信息,然后重新加载其内容...

【问题讨论】:

    标签: iphone objective-c uiviewcontroller uinavigationbar


    【解决方案1】:

    获取在 viewDidLoad 方法中设置按钮的代码并将其移动到 viewWillAppear 中。当您重新进入视图时,它应该会正确更新按钮。

    【讨论】:

    • 哎呀,请参阅下面的文字:P:d。没有重新加载页面...谢谢
    【解决方案2】:

    我找到了解决方案: 此类代码(在 popViewController 或此类事件后更改按钮)应编写在 viewWillApear 中,以使其在每次加载视图时都运行。

    感谢 irc.freenode.net 上 #iphonedev 上的 Quentarez 和 crackity_jones。

    【讨论】:

      【解决方案3】:

      正确设置委托并

      - (void)navigationController:(UINavigationController *)navigationController
                       willShowViewController:(UIViewController *)viewController
                       animated:(BOOL)animated
      {
          NSLog(@"navigationController willShowViewController");
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-11-14
        • 1970-01-01
        • 2016-03-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多