以编程方式继续..有史以来

以编程方式继续..有史以来

问题描述:

我想创建一个手动segue,只有当有一个特定的conidition(成功登录)才会发生。以编程方式继续..有史以来

我按照步骤是这些:

1)我创建在源的ViewController一个按钮,以及i连接在按钮与该目的地的ViewController拖动。

2)我设置了SEGUE标识符,称这是login_ok

3)我创建了一个-(IBAction)buttonPressed:(id)sender

现在,我试图做出了榜样,看看是否工作与否。我写道:

- (IBAction)buttonPressed:(id)sender 
{ 
    BOOL test = false; 
    if(test == true) 
    { 
     [self performSegueWithIdentifier:@"login_ok" sender:self]; 
    } 

从理论上讲,应该赛格瑞工作not,因为我设置test=false,和我说的SEGUE应该工作只有在测试=真。

segue的作品,让我去目的地viewcontroller。

为什么?

+0

你是如何创建segue的?在故事板?你是否将它从按钮拖动到目标vc或从第一个vc? – LinusGeffarth

+0

@LinusGeffarth是的,我在故事板中创建了一个segue。我已经选择源视图控制器中的按钮,并将其拖到目标视图控制器 –

如果您将按钮连接到目标控制器的拖动,它仍然应该继续。

您需要连接屏幕之间的连线,而不是从按钮连接到屏幕。然后,你可以从代码中控制你的segue。

+0

好吧,我解决了。谢谢! –

+0

感谢致谢:) – LinusGeffarth

你应该定义你的控制器之间的而不是从按钮到控制器。视图控制器之间限定赛格瑞比从任何组件限定SEGUE到一个视图控制器,因为当要使用的条件对于任何动作,则可以使用这两种方法更实用有效

[self performSegueWithIdentifier:@"segueID" sender:self];

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender

例如:

- (IBAction)buttonPressed:(id)sender 
{ 
    BOOL test = YES; 
    if(test == YES) 
     [self performSegueWithIdentifier:@"login_ok" sender:self]; 
} 

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if ([[segue identifier] isEqualToString:@"login_ok"]) 
    { 
     YourNextController *controller = [segue destinationViewController]; 

     controller.welcomeText = @"Hi! Test is true congratulations"; 
    } 
} 

特别是对将数据从控制器分配到另一个,这种方式总是有用的。