2014-09-26 85 views
0

我有3个视图控制器:A,B和C.A是初始的,它有2个按钮:一个重定向到B,第二个到C.当B被按下时,按钮内B被按下的用户被重定向到C.现在在C中的导航栏上,当我按下后退按钮时,我想总是将其重定向到A,并且从不到B.这是可能的吗?导航栏后退按钮更改功能

这是基本的功能我想实现:

一)

A->B->C  C back to A 

B)

A->C   C back to A 

回答

0
for (UIViewController *controller in self.navigationController.viewControllers) 
{ 
    if ([controller isKindOfClass:[A class]]) 
    { 
     [self.navigationController popToViewController:controller 
               animated:YES]; 
     break; 
    } 
} 
+0

这是我需要的答案。非常感谢。 – AleksandarNS 2014-09-26 11:43:17

0

的唯一途径是通过自定义按钮替换后退按钮。

+0

你能详细点吗?演示如何做到这一点,提供一个样本,一种使用方法? – Cyrille 2014-09-26 11:05:43

0

你可以通过presentview控制器来实现这一点作为模式view.first从一个如果第一个按钮被按下存在b view.if secnd按钮被按下存在c视图和在c视图控制器放回按钮并添加委托并实现委托在视图控制器中,你必须在视图控制器中关闭一个视图。

0

读你说的话之后,我想你的意思是实现自定义操作每个button.The方式,我会做(斯威夫特)是这样的:

@IBAction func pressButton(sender : UIButton){ 

var SecondView :ViewController2 
SecondView = self.storyboard?.instantiateViewControllerWithIdentifier("SecondView") as ViewController2 
self.presentViewController(SecondView, animated: true, completion:nil) 
self.viewWillDisappear(true) 
} 

这个方法我用了很多,我知道有使用塞格斯另一种方式,但你仍然可以使用@ IBActions.You只需要创建一个新的赛格瑞(标识)和prepareforSegue方法,你说当赛格瑞被触发

0

个究竟通过更换后退按钮

UIBarButtonItem *btnBack = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:self action:@selector(clkBack)]; 
    self.navigationItem.leftBarButtonItem = btnBack; 

    - (void)clkBack{ 
     //your view controllers 
    } 
试试这个