嘿 Fabio Cardoso 有两种类型的 Segue
- 触发更少的 segue 和
- 触发转场
在 trigger less segue 中,您只需直接从一个 ViewController 拖动到另一个。你没有提到你希望 Segue 完成哪个动作。为此,您需要像上面那样创建 segue 标识符。并在您的代码中调用以下行。
[self performSegueWithIdentifier:@"YOUR_IDENTIFIER" sender:self];
在第二种方式中,您直接 Ctrl+从一个按钮拖动到另一个 ViewController。所以不需要为此编写任何代码。当您单击该按钮时,它将执行 Push、Model 或自定义 segue 您在情节提要中选择的内容。
如果在 Source ViewController 中调用以下方法执行的 segue。在这里,您可以编写自己的代码来将值从第一个 ViewController 传递给另一个或任何其他东西。
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
如果您的 ViewController 中有多个 segue,则将使用标识符。您可以像这样使用标识符
if ([segue.identifier isEqualToString:@"YOUR_IDENTIFIER"])
注意:Segue 只是一种方式,所以如果您从第一个 ViewController 到另一个创建 segue,并且如果您想返回(在模型操作的情况下),您必须为第二个 ViewController 编写委托方法并单击按钮操作调用
**FirstViewController.h**
@interface FirstViewController : UIViewController <SecondViewControllerDelegate>
{
}
- (IBAction) buttonTapped:(id)sender;
**FirstViewController.m**
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"YOUR_IDENTIFIER"])
{
SecondViewController *svc_obj = segue.destinationViewController;
svc_obj.delegate = self;
}
}
- (void) buttonTapped:(id)sender
{
[self performSegueWithIdentifier:@"YOUR_IDENTIFIER" sender:self];
}
- (void) secondViewControllerDidCancel: (SecondViewController *) controller
{
[controller dismissViewControllerAnimated:YES completion:nil];
}
**SecondViewController.h**
@class SecondViewController;
@protocol SecondViewControllerDelegate <NSObject>
- (void) secondViewControllerDidCancel: (SecondViewController *) controller;
@end
@interface SecondViewController : UIViewController
{
}
@property (nonatomic, weak) id <SecondViewControllerDelegate> delegate;
- (IBAction)cancelButtonTapped:(id)sender;
**SecondViewController.m**
- (IBAction)cancelButtonTapped:(id)sender
{
[self.delegate secondViewControllerDidCancel:self];
}
@end