2011-09-02 49 views
0

我想用一种方法删除两个viewcontrollers(已被添加在彼此的顶部)。我在interfacebuilder中提出了观点。他们都拥有自己的.h和.m文件。从超级视图的ButtonClick事件删除ViewController

场景我在:

我有进口了视图2头文件中的主菜单。在方法我添加所述第二视图上上海华的顶端,像这样

view2ViewController * view2 = [[view2ViewController alloc]  initWithNibName:@"view2ViewController" bundle:nil]; 
[self.view addSubview:view2.view]; 

然后在图2 I已经添加了视图3的头文件,所以我可以添加视图3作为一个子视图ontop的视图2的。我有再次连接的另一种方法,以便在按下按钮到Interface Builder来一个UIButton的方法被称为视图2这增加了图3顶部酷似所以同样的方式:

view3ViewController * view3 = [[view3ViewController alloc]  initWithNibName:@"view3ViewController" bundle:nil]; 
    [self.view addSubview:view3.view]; 

什么即时通讯试图解决:我在视图3中有一个按钮,它应该删除视图3 ....然后它也应该删除视图2,因此主屏幕可见。

这是如何实现的?

我有什么至今:

[self.view removeFromSuperview]; 

但是,这仅删除查看3 ......但叶视图到位。

什么需要修改,以便我可以删除视图2?

任何帮助表示赞赏。

+1

通过删除你的意思是改变视图和viewcontroller – Robin

+0

你如何插入此视图? – mayuur

+0

@Mayur我做了一个herirchy。在点击标签栏上的按钮时,我在view1上出现了view2,然后在view2上单击按钮,view3控制器就会出现。 –

回答

2

实际上,您添加任何视图的方式与删除该视图的方式相同。假设,您可以通过将其推入导航控制器这样

[self.navigationController pushViewController:yourViewController animated:YES]; 

添加视图,那么你就需要编写成yourViewController.m文件这个

//inYourViewController.m file 
    [self.navigationController popViewControllerAnimated:YES]; 

新的编辑:

好吧,所以假设你提供了ModalViewController然后做到这一点。

现在,你的第二个问题你想去view1而不是view2。在AppDelegate中创建一个布尔变量。在View3中按完成按钮时进行设置。现在

//inYourAppDelegate.h 
    BOOL doneBtnClicked = NO; 

    //inYourViewController3.m 
    - (IBAction) doneBtnPressed : (id) sender 
    { 
      //your code 
      yourAppDelegate *appDelegate = [[UIApplication sharedApplication]delegate]; 
      appDelegate.doneBtnClicked = YES; 
    >>CHANGE THIS  [self.view removeFromSuperview]; 
    } 

,在您的视图2,在viewWillAppear中方法

- (void) viewWillAppear:(BOOL)animated 
    { 
     [super viewWillAppear:animated]; 
      //your code 
      yourAppDelegate *appDelegate = [[UIApplication sharedApplication]delegate]; 
      if(appDelegate.doneBtnClicked) 
      { 
        appDelegate.doneBtnClicked = NO; 
    >>AND THIS  [self.view removeFromSuperview]; 
      } 
    } 

然而,你想做的事是很容易实现与UINavigationController.I的帮助,建议你用做导航的帮助,因为它在内存管理方面会变得很容易,而且导航控制器仅用于此目的。

+0

@ Mayur.Its heirercy。我没有使用导航控制器。我曾经在最大的视图中呈现模式.Whole view1 .Veiw2更大.View3更小。因此,当我点击完成按钮view3和view2将只会删除。 View1会出现 –

+1

好吧,请检查我编辑的答案。您只需将self.navigationController的popController更改为dismissModalViewController方法,您就可以轻松完成任务。 – mayuur

+0

谢谢,但我认为有一些问题understang.Please chekc我编辑的问题 –

相关问题