Ios 如何从super superview中删除自身和superview?

Ios 如何从super superview中删除自身和superview?,ios,uiviewcontroller,uinavigationbar,Ios,Uiviewcontroller,Uinavigationbar,我有一个UIViewController类a和BA使用以下方式加载B:A.view addSubView B.view B有一个带有后退按钮的导航栏。我想在单击时返回到A,因此在选择器中我尝试了[self.view removeFromSuperview],但它只删除了导航栏。然后我尝试了[self.view.superview removeFromSuperview],它仍然只是删除了导航栏。我该怎么办 另外,后退按钮还有一个小问题:设置它的标题。我尝试了这两种方法,但它仍然显示“后退” 提前

我有一个
UIViewController
a
B
<代码>A使用以下方式加载
B
:A.view addSubView B.view

B
有一个带有后退按钮的导航栏。我想在单击时返回到
A
,因此在选择器中我尝试了
[self.view removeFromSuperview]
,但它只删除了导航栏。然后我尝试了
[self.view.superview removeFromSuperview]
,它仍然只是删除了导航栏。我该怎么办

另外,后退按钮还有一个小问题:设置它的标题。我尝试了这两种方法,但它仍然显示“后退”


提前谢谢你

我认为您不太了解iOS中导航(使用
UINavigationController
)的工作原理。假设您想要动画,这就是您想要的:

  • 设置
    UINavigationController
    。这可以在应用程序的委托中完成(为了避免内存泄漏,请在
    UINavigationController*navController
    上设置一个实例变量:

    navController = [[UINavigationController alloc] initWithRootViewController:A];
    
    请注意,我们正在添加
    A
    作为根视图控制器

  • 需要时按下第二个视图控制器。我假设您在单击按钮或其他操作后添加
    B.view
    。在实现添加第二个视图控制器的方法时,请运行以下代码,而不是
    [a.view addSubview:B.view]
    。此方法应位于第一个控制器的.m文件中:

    [self.navigationController pushViewController:B animated:YES];
    
    这也将提供一个很好的过渡效果

  • 将第二个视图控制器从堆栈中弹出。使用
    UINavigationController
    ,按下的视图控制器中会自动包含一个漂亮的箭头形状的后退按钮,以导航回上一个视图控制器。这意味着您甚至不需要任何代码来允许向后导航

  • 就是这样!现在如果您需要更改
    B
    的后退按钮的标题,请在
    A
    viewDidLoad
    方法中执行此操作:

    self.navigationItem.backBarButtonItem = customBackButtonItem;
    

    你可以获得一个子视图数组,然后删除你想删除的子视图。这篇文章将向你展示如何使用子视图数组删除所有子视图或多个子视图。

    事实是我没有使用UINavigationController。相反,B有一个UINavigationBar,带有“上一步”和“下一步”按钮,因为我需要对这两个按钮进行一些自定义操作。它看起来像UI导航控制器是一个不错的选择。我会尝试一下!谢谢你,我很感激。我已经准备好给+1,直到
    backButtonTitle
    -这不是
    UINavigationItem
    @jrturton的属性,我更新了它。看起来苹果删除了
    backButtonTitle
    属性,用
    backBarButtonI>替换它tem
    self.navigationItem.backBarButtonItem = customBackButtonItem;