2011-08-02 34 views
1
- (void)cancel { 
// What should I do here? 
} 

// root view controller 
- (void)viewDidLoad { 
    [super viewDidLoad]; 

    UIBarButtonItem *cancelButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(cancel)]; 
    self.navigationItem.leftBarButtonItem = cancelButton; 
    [cancelButton release];  
} 

我在导航栏中添加了取消按钮。 当按下取消按钮时,我想从根视图返回到先前的视图。 取消时我需要做些什么?我像这样添加了根视图控制器。如何从根视图恢复到以前的视图?

RootController *rootController = [[RootController alloc]initWithStyle:UITableViewStylePlain];    
UINavigationController *aNavigationController = [[UINavigationController alloc]initWithRootViewController:rootController]; 
self.naviController = aNavigationController; 
[aNavigationController release]; 
[rootController release]; 
[self.view addSubview:[naviController view]]; 

回答

3

您可以弹出视图。

[self.navigationController popViewControllerAnimated:YES]; 

你也可以解雇它。

dismissModalViewcontrollerAnimated 

编辑: 如果要添加视图,那么你需要删除你的看法。

[self.view removeFromSuperView]; 
+0

我试了两种。当我按下取消按钮时,没有任何变化。 – user698200

+0

请参阅编辑部分。 – Akshay

+0

[self.view removeFromSuperview];作品。但导航栏仍然存在,当它消失时,没有动画。 – user698200

1

如果你使用了navigationController推视图,您可以利用popViewController: animated:方法。如果您将视图呈现为模态视图,则可以使用dismissModalViewcontrollerAnimated:方法

0

看来你不推或呈现aNavigationController。您只是将其添加为subviewpopViewControlle r和dismissModalViewController都不会在这里工作。你必须从它的superView中删除它。尝试这个。

- (void)cancel { 

    [self.view removeFromSuperView]; 
} 
+0

它如何使popViewController工作?你可以推动根视图控制器,而不是像这样添加它? \t [self.navigationController pushViewController:rootController animated:YES]; – user698200

+0

是的。你可以很好地做到这一点。但是,确保主视图控制器位于导航控制器内。 – EmptyStack

+0

我仍然不知道如何推送根视图控制器而不是添加。这段代码有什么问题? RootController * rootController = [[RootController alloc] initWithStyle:UITableViewStylePlain]; \t \t \t \t [self.navigationController pushViewController:rootController animated:YES]; [rootController release]; – user698200

0

加入此项。

[self.view removeFromSuperview] 
相关问题