2013-07-23 23 views
2

语境:我有两个VC,A和B. VC A包含几个按钮和几个标签。按下VC A中的按钮时,Segue将显示VC B/C /,等等。现在,当完成VC A/B/C时,赛格正在放松,以便VC A出现。对于大多数VC B/C/D等,我使用的是通过该VC中的按钮触发的展开方法(ctrl +拖动到“退出”图标)。这完美的作品,因为在返回到VC A,下面的动作被自动调用:开卷Segue公司编程 - 新的转折

- (IBAction)returned:(UIStoryboardSegue *)segue { 
// Here I do some stuff 
} 

问题:现在,在二次风险投资人之一(如d),事情有点特殊。在这个VC中,我通过循环以编程方式生成了一百个按钮,然后检测哪个按钮被按下,最后退回到VC A(没有特定按钮;任何按钮都会触发展开)。我知道我可以用这个

[self dismissViewControllerAnimated: YES completion: nil] 

做到这一点如而是返回到VC A,此时,或者通过使用该

[self performSegueWithIdentifier:@"UnwindSegueIdentifier" sender:self] 

这不会触发上述动作,但是这会产生一个新的实例VC A,我不想要(因为VC A实例中的标签已包含一些信息)。

所以,我想要的是能够返回到其产生的VC d VC A相同的情况下,也触发上面列出的“返回”行动。因此,我希望获得与使用连接到“退出”图标的按钮时相同的效果,但是当按下VC D中的众多按钮时,我希望以编程方式“在代码内部”执行此操作。

有什么想法?

回答

6

[self performSegueWithIdentifier:@"UnwindSegueIdentifier" sender:self]应该只是罚款。无论它们如何执行,展开赛段都不会创建其目的地的新实例。它们是唯一的,因为它是唯一不会创建目标的新实例的继续。

+2

+1没错。唯一的“诀窍”是如何在故事板中创建一个展开顺序(您必须控制 - 从场景下方的栏中的视图控制器图标拖动到出口图标),但这种技术效果很好。 – Rob

+0

@Scott - 也许它应该,但我得到一个VC A的新实例,当我点击该实例上的完成按钮时,VC A在我离开时显示... –

+0

@Rob - 林不知道我关注你,我做了一个手动继续按CTRL-点击VC VC中的VC图标到VC A.你是什么意思的“插座图标”,你是指在VC A或D中它? –

0

Ulas公寓已正确理解和回答的问题。原始的海报希望确保退卷“(IBAction为)myCustomName:(UIStoryboardSegue *)赛格瑞”选择了退卷后叫,而无需“手动”链接按钮,以开卷SEGUE。为了强调这一点,假设您在运行时基于某些条件以编程方式创建按钮。您无法手动将该按钮连接到展开顺序。你需要做VC B内部这样的事情...从VC B在成立

UIBarButtonItem *dynamicButton = [[UIBarButtonItem alloc] 
         initWithTitle:@"Cool" 
         style:UIBarButtonItemStyleBordered 
         target:self 
         action:@selector(killView)]; 
self.navigationItem.leftBarButtonItem = dynamicButton; 


- (void) killView 
{ 
    [self performSegueWithIdentifier:@"TEST" sender:self]; 
} 

“测试” SEGUE手动退出(即视图控制器本身不是一个按钮)。点击按钮后,它会调用killView方法,并通过标识符触发segue。