检查 Segue 的发件人
Check the Sender of a Segue
在 -prepareForSegue:sender:
中,如何检查 sender
是否是写入 -prepareForSegue:sender:
的视图控制器?
换句话说,我如何比较 sender
参数以查看调用 -performSegueWithIdentifier:sender:
时传递的内容
我试过了:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"identifier"])
if ([(MyViewControllerClass *)sender isEqual:self]) {
// stuff
} else {...}
}
}
还尝试用 ==
代替 isEqual:
。
else
部分始终执行。
你可以试试这个
if([sender isKindOfClass:[MyViewControllerClass class]){
//do stuff
}
更新:首先,下面的代码当然是废话,这里是 有意义的版本:
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
[self performSegueWithIdentifier:@"segueIdentifier" sender:self];
}
- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if (segue.sourceViewController == sender) {
NSLog(@"i have been the sender");
}
}
愚蠢的最后一个版本作为参考你不应该做什么 - 快速回答:
我想你不想检查发件人。发件人也可以是激活 segue 的 Button - 我 guess 你想检查 sourceViewController.
- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if (segue.sourceViewController == self) {
NSLog(@"i have been the source");
}
}
这将检查 segue 是否会 从 转换为当前 ViewController。
在 -prepareForSegue:sender:
中,如何检查 sender
是否是写入 -prepareForSegue:sender:
的视图控制器?
换句话说,我如何比较 sender
参数以查看调用 -performSegueWithIdentifier:sender:
我试过了:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"identifier"])
if ([(MyViewControllerClass *)sender isEqual:self]) {
// stuff
} else {...}
}
}
还尝试用 ==
代替 isEqual:
。
else
部分始终执行。
你可以试试这个
if([sender isKindOfClass:[MyViewControllerClass class]){
//do stuff
}
更新:首先,下面的代码当然是废话,这里是 有意义的版本:
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
[self performSegueWithIdentifier:@"segueIdentifier" sender:self];
}
- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if (segue.sourceViewController == sender) {
NSLog(@"i have been the sender");
}
}
愚蠢的最后一个版本作为参考你不应该做什么 - 快速回答: 我想你不想检查发件人。发件人也可以是激活 segue 的 Button - 我 guess 你想检查 sourceViewController.
- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if (segue.sourceViewController == self) {
NSLog(@"i have been the source");
}
}
这将检查 segue 是否会 从 转换为当前 ViewController。