首页 文章

在没有UI导航器控件的情况下在uiviewcontrollers之间切换

提问于
浏览
2

我想以编程方式在2个UIViewController类之间切换,而不需要任何额外的UI控件,比如向应用程序添加UI的UITabBarController .

我的主要使用addSubView加载第一个视图控制器 .

vc1 = new viewc1();
    window.AddSubview(vc1.View);
    window.MakeKeyAndVisible ();

我可以使用PresentModalViewController从第一个加载我的第二个viewcontroller

vc2 = new viewc2();
    PresentModalViewController(vc2, true);

但我需要来回切换,并释放旧的viewControllers以节省内存 . 做这个的最好方式是什么? DismissModalViewControllerAnimated(false); 在第二个视图控制器不释放内存,我不想要模态"windows",因为它似乎不是最佳 . 我有一个自定义UI,因此不需要tabbar控制器 .

2 回答

  • 3

    你可以用简单的代码完成 . 但是您无法释放视图控制器,因为它需要处理用户交互,例如按钮点击事件等 . 向窗口添加视图将仅保留视图实例 . 如果释放视图控制器实例,则可能会出现错误的访问错误或无法识别的选择器错误 .

    所以让你的主要代码

    if(vc1==nil)
      vc1 = new viewC1();
    window.addSubView(vc1.view);
    window.MakeKeyAndVisible ();
    

    你的开关代码将是

    if(vc2==nil)
       vc2 = new viewC2();
    if(vc1.view.superview!=nil){
       vc1.view.removefromSuperView();
       window.addsubview(vc2.view);
    } else {
       vc2.view.removeFromSuperView();
       window.addsubview(vc1.view);
    }
    

    现在在dealloc方法中添加

    vc1.release();
    vc2.release();
    

    多数民众赞成...希望这有帮助......我只是按照你的语法

  • 0

    你可以使用 UINavigationController ,你不需要它提供的额外UI . 你可以使用 . UINavigationBarHidden 属性隐藏了该属性 . 要在视图之间切换,您只需使用 PushViewController(controller, animated) 来推送新视图 . 如果要释放旧控制器,则可以使用以下命令设置 UINavigationController.ViewControllers 属性:

    navigationController.ViewControllers = new UIViewController[1]{ vc2 };
    

    这将删除第一个控制器的引用,并使第二个控制器成为根 . (这也可以反过来!)

相关问题