Ios 通过UIViewController/UIView—移动;代码与概念问题

Ios 通过UIViewController/UIView—移动;代码与概念问题,ios,uiview,uiviewcontroller,Ios,Uiview,Uiviewcontroller,下面有一些代码,但这也是一个概念问题。问题是:下面的方法是通过视图控制器移动的正确方法吗?这是广泛的,所以让我补充一些具体的细节 假设您在视图A中。此视图提供了转到视图B或视图C的选项。在用户做出选择后(i)我想加载新视图,并且(ii)用户不会返回视图A。(顺便说一句,视图A是我的初始rootViewController。) 所以,假设我在视图A中连接两个按钮,每个按钮加载各自的视图。这是一种有效/可靠的方法吗: - (IBAction)loadViewB:(id)sender { Vi

下面有一些代码,但这也是一个概念问题。问题是:下面的方法是通过视图控制器移动的正确方法吗?这是广泛的,所以让我补充一些具体的细节

假设您在视图A中。此视图提供了转到视图B或视图C的选项。在用户做出选择后(i)我想加载新视图,并且(ii)用户不会返回视图A。(顺便说一句,视图A是我的初始rootViewController。)

所以,假设我在视图A中连接两个按钮,每个按钮加载各自的视图。这是一种有效/可靠的方法吗:

- (IBAction)loadViewB:(id)sender
{
    ViewBController *viewBController = [[ViewBController alloc] initWithNibName:Nil bundle:Nil];
    [self.view.superview insertSubview:viewBController.view atIndex:0];
    [self.view removeFromSuperview];
}   


- (IBAction)loadViewC:(id)sender
{     
    ViewCController *viewCController = [[ViewCController alloc] initWithNibName:Nil bundle:Nil];
    [self.view.superview insertSubview:viewCController.view atIndex:0];
    [self.view removeFromSuperview];
}
“insertSubview:atIndex:”方法似乎是正确的,基于。此外,代码也可以工作。但是我应该称之为“removeFromSuperview”吗?还是我应该把它们叠起来?(如果有人对内存管理有意见,我洗耳恭听。)

此外:

  • 我不想在结构化数据中移动。所以,使用UINavigationController似乎并不正确
  • 我不想暂时中断流程。因此,请创建一个模态视图
  • 我知道这是一个简单的问题,但我只是想确保我正确理解了文档,并且大体上掌握了概念


    提前谢谢

    我认为你的方法没有任何问题。请注意,简单地
    [self.view removeFromSuperview]
    可能不会导致释放任何内存,例如,如果您的应用程序代理持有对根视图控制器的引用。将此视图切换责任交给应用程序代理可能是个好主意,这样它可以根据需要选择释放对根视图控制器的引用。

    Jacob,谢谢您的回答。我很高兴没事。我将确保应用程序代理在将其添加到视图后释放根视图控制器。(那就行了,对吗?)还有一点需要澄清:通常情况下,方法是添加视图,然后控制器也会随之被拖动,对吗?当视图被添加到视图中时,或者当您想要删除它时,您可以释放它。但我认为通常的方法是视图与控制器“配合”,所以我倾向于后者。