【问题标题】:Accessing pushViewController's methods from popViewController从 popViewController 访问 pushViewController 的方法
【发布时间】:2010-12-09 07:20:53
【问题描述】:

我正在开发基于视图的应用程序。在这我有两个视图控制器。它们是:Rootviewcontroller 和 Detailviewcontroller。

现在我正在使用 pushViewController 方法将值传递给 Detailviewcontroller。它工作正常。但是现在当我从这个 Detailviewcontroller 中弹出时,我应该访问 Rootviewcontroller 中的 myfunction。请问可以吗?

任何帮助将不胜感激!

-沙迪亚

【问题讨论】:

    标签: iphone objective-c iphone-sdk-3.0 uiviewcontroller viewcontroller


    【解决方案1】:

    在 AppDelegate 中存储 rootViewController 的实例。

    // AppDelegate.h
    RootViewController* rootViewController;
    

    为实现添加访问方法。

    // AppDelegate.m     
    - (UIViewController*) GetRootViewController {
        return rootViewController;
    } 
    

    调用此方法可从应用中的任何位置获取 rootViewController。

    UIViewController* controller =
        [(AppDelegate*)[[UIApplication sharedApplication] delegate] GetRootViewController];
    

    【讨论】:

      【解决方案2】:

      我并没有 100% 真正理解您的问题,但我认为您想从堆栈中的另一个视图控制器访问根视图控制器的方法?

      你可以在 DetailViewController 中做这样的事情:

      RootViewController *rootViewController = (RootViewController*)self.navigationController.topViewController;
      

      现在您有了对 Root 的引用,您可以随意调用它的方法。

      【讨论】:

      • 是的,我想从另一个视图控制器访问 Rootviewcontroller 的方法。根据您的建议,我尝试了 rootviewcontroller 方法,但应用程序被终止。还有其他解决办法吗?
      【解决方案3】:

      在根视图控制器的 viewWillAppear:(BOOL)animated 方法或 viewDidAppear:(BOOL)animated 方法中调用 myfunction,具体取决于您希望何时调用它。这样,只要该控制器出现,您需要的代码就会运行。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-10-16
        • 2021-01-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-16
        • 2011-10-19
        相关资源
        最近更新 更多