如何使用PerformSegueForIdentifier
问题描述:
我很新鲜的iOS和objective-c。我正在学习如何使用segues,特别是展开segue。如何使用PerformSegueForIdentifier
阅读时,我对'shouldPerformSegueForIdentifier'和'performSegueForIdentifier'的用法有点困惑。
我创建了一个例子包含了两个“ViewControllers”,“ViewController.m”,如图下面贴“VC_1”和“ServiceViewController”代码
我的问题是:
- 当又该如何我使用'performSegueForIdentifier'
- 当和如何使用'shouldIPerformSegueForIdentifier'?
VC_1:
#import "ViewController.h"
#import "ServiceViewController.h"
@interface ViewController()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a
nib.
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
-(IBAction)btnStartService:(UIButton *)sender {
if (sender.tag == 1) {
NSLog(@"CLICKED");
[self performSegueWithIdentifier:@"seguePassInterval" sender:(id)
sender];
}
}
-(IBAction)btnExitApp:(UIButton *)sender {
NSLog(@"EXIT_CLICKED");
}
- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"seguePassInterval"]) {
((ServiceViewController*)segue.destinationViewController).data = @"testData"; //passing data to destinationViewController of type "TestViewController"
NSLog(@"SEGUE");
}
}
@end
IMG
答
的prepareForSegue
方法被调用执行SEGUE权之前,并允许除其他事项外传递ViewController
之间的数据,您可以通过示例检查您的segue的标识符是否为“XxX”并传递了一些数据,或者如果是“YYY”ca一种方法
- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"seguePassInterval"]) {
((TestViewController*)segue.destinationViewController).data = @"testData"; //passing data to destinationViewController of type "TestViewController"
NSLog(@"SEGUE");
}
}
方法performSegueWithIdentifier
LL被用来作为他的名字说执行赛格瑞用他的标识,您可以执行赛格瑞当你需要它
最后shouldPerformSegue
用于避免执行SEGUE如果您的应用程序在某些状态下,例如,如果你没有destinationViewController
数据还没有,直到你得到
希望这有助于
对于shouldPerformSegueForIdentifier可以返回false它是决定是否应该执行具有指定标识符的segue。并为执行SegueForIdentifier使用它,您可以将数据从一个VC传递到另一个 –
您可以请提供一个示例如何使用shouldPerformSegueForIdentifier? – user2121
当你自己调用performSegueWithIdentifier时,shouldPerformSegueWithIdentifier不会被调用,因为可以假设你知道你在做什么。在调用performSegueWithIdentifier没有意义,但是然后返回NO从shouldPerformSegueWithIdentifier –