以编程方式继续..有史以来
我想创建一个手动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。
为什么?
如果您将按钮连接到目标控制器的拖动,它仍然应该继续。
您需要连接屏幕之间的连线,而不是从按钮连接到屏幕。然后,你可以从代码中控制你的segue。
好吧,我解决了。谢谢! –
感谢致谢:) – 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";
}
}
特别是对将数据从控制器分配到另一个,这种方式总是有用的。
你是如何创建segue的?在故事板?你是否将它从按钮拖动到目标vc或从第一个vc? – LinusGeffarth
@LinusGeffarth是的,我在故事板中创建了一个segue。我已经选择源视图控制器中的按钮,并将其拖到目标视图控制器 –