Performwithsegue 并以编程方式切换视图 - Objective-C
Performwithsegue and programatically switching views - Objective-C
我有问题,我想在计时器到期时更改为另一个 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]
但这不起作用。
我的准备代码是:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
Innameformulier *IForm = [segue destinationViewController];
IForm.SignatureTransport = _drawImage.image;
IForm.KlantnaamInname = _Klantnaamtransport;
}
如何调用此函数以在计时器上发生?
好的,您在这里所做的是完全绕过 segue。你需要做这样的事情...
- (IBAction)Akkoord:(id)sender {
[self performseguewithidentifier:@"nextcontroller"]
}
这就是您需要做的全部。然后 segue 将为您创建 nextController,然后 prepareForSegue
中的代码将传递变量。
如果你想在计时器上使用它,那么你只需要设置一个计时器,当它到期时你可以 运行...
[self performseguewithidentifier:@"nextcontroller"]
只要你有一个带有这个标识符的segue,它就可以在任何地方使用。在计时器之后。
在 Interface Builder
中,select 要从中触发 segue 的视图控制器,CTRL-从它拖动到目标视图控制器,然后创建一个 segue。
Select 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
中触发动作转场
我有问题,我想在计时器到期时更改为另一个 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]
但这不起作用。
我的准备代码是:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
Innameformulier *IForm = [segue destinationViewController];
IForm.SignatureTransport = _drawImage.image;
IForm.KlantnaamInname = _Klantnaamtransport;
}
如何调用此函数以在计时器上发生?
好的,您在这里所做的是完全绕过 segue。你需要做这样的事情...
- (IBAction)Akkoord:(id)sender {
[self performseguewithidentifier:@"nextcontroller"]
}
这就是您需要做的全部。然后 segue 将为您创建 nextController,然后 prepareForSegue
中的代码将传递变量。
如果你想在计时器上使用它,那么你只需要设置一个计时器,当它到期时你可以 运行...
[self performseguewithidentifier:@"nextcontroller"]
只要你有一个带有这个标识符的segue,它就可以在任何地方使用。在计时器之后。
在 Interface Builder
中,select 要从中触发 segue 的视图控制器,CTRL-从它拖动到目标视图控制器,然后创建一个 segue。
Select 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"]
.
注意:您还可以从 UIControl
子类(例如 UIButton