如何从代表外部设置超级视图?

时间:2011-08-06 10:21:45

标签: iphone ios cocoa-touch cocoa-design-patterns

我有一个奇怪的设计模式,我有一个工具栏作为标签栏。基本上我将这个工具栏添加到我的所有视图控制器,工具栏本身包含指向我的应用程序中3个不同的导航控制器的指针。当按下其中一个工具栏按钮时,它应该能够删除当前在窗口上的导航控制器,并添加用户选择的导航控制器。我的问题是我不确定如何将新的navcontroller添加到superview。我会实例化一个app delegate对象并将其添加到该对象中吗?或者我是否需要将我的app委托指针作为类变量发送到工具栏?任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

在我看来,解决此问题的最佳方法是管理您的应用代表中的UINavigationController切换。您也可以在此处查看此过程中需要执行的所有清理工作。如果有一定数量的UINavigationController被切换出来,我可能只有几种方法可以解决这个问题:

App委托.h文件:

@property (nonatomic, retain) UINavigationController *currentNavController;

App delegate .m文件:

    @synthesize currentNavController = _currentNavController;

    - (void)loadNavControllerOne
    {
        self.currentNavController = ...; // Set up your new controller
        self.window.rootViewController = self.currentNavController;
    }

    - (void)loadNavControllerTwo
    {
        // Similar to -(void)loadNavControllerOne
    }

Abridged,但你明白了。但是,如果您需要在这些控制器之间共享状态,这将会改变。你呢?

编辑:要访问应用代理人,请致电[[UIApplication sharedApplication] delegate]