Performwithsegue和以编程方式切换视图 - Objective-C

时间:2015-05-01 10:57:45

标签: objective-c segue viewcontroller

我遇到了问题,我希望在计时器到期时更改为另一个viewcontroller并使用此代码:

- (IBAction)Akkoord:(id)sender {
    UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
    UIViewController *vc = [mainStoryboard instantiateViewControllerWithIdentifier:@"Innameformulier"];
    [self presentViewController:vc animated:YES completion:nil];
    [self performseguewithidentifier:@"nextcontroller"]
}

但是当我使用它时,我的prepareforsegue方法中的变量没有通过。我怎样才能做到这一点?我已经尝试[self performseguewithidentifier],但这不起作用。

我的preparforsegue代码是:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    Innameformulier *IForm = [segue destinationViewController];
    IForm.SignatureTransport = _drawImage.image;
    IForm.KlantnaamInname = _Klantnaamtransport;
}

如何在计时器上调用此功能?

2 个答案:

答案 0 :(得分:1)

Interface Builder中,选择要从中触发segue的视图控制器, CTRL -drag从中到目标View Controller并创建一个segue。

选择segue,打开Attributes Inspector并为其创建一个Identifier。

返回触发segue的View Controller Class,如果您尚未对其进行评论,请添加方法prepareForSegue:

prepareForSegue:方法中,您应该具有以下内容:

- (void)prepareForSegue:(UIStoryboardSegue *)segue {

    if ([segue.identifier isEqualToString:@"XXXX"]) {

        DestinationVC *dVC = segue.destinationViewController;
        dVC.attribute1 = self.anAttribute;
        dVC.attribute2 = self.anotherAttribute;
   }
}

现在你可以通过调用[self performSegueWithIdentifier:@"XXXX"]来激活segue。

注意:你也可以从像UIControl

这样的UIButton子类中触发一个动作segue

enter image description here

答案 1 :(得分:0)

好的,你在这里做的是彻底绕过segue。你需要做这样的事情......

- (IBAction)Akkoord:(id)sender {
    [self performseguewithidentifier:@"nextcontroller"]
}

这就是你需要做的。然后segue将为您创建nextController,然后prepareForSegue中的代码将传递变量。

如果你想在计时器上使用,那么你只需要设置一个计时器,当它到期时你可以运行......

[self performseguewithidentifier:@"nextcontroller"]

只要您拥有带有此标识符的segue,它就可以在任何地方使用。永远都是一个计时器。