2011-08-02 70 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] 
相關問題