检查Segue的发件人

时间:2015-03-08 13:52:49

标签: ios 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部分。

2 个答案:

答案 0 :(得分:1)

你可以试试这个

if([sender isKindOfClass:[MyViewControllerClass class]){
    //do stuff
}

答案 1 :(得分:1)

更新:首先下面的代码是crap ofcourse,这里 的版本有意义:

- (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的按钮 - 我要猜测你想要检查sourceViewController。

- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    if (segue.sourceViewController == self) {
        NSLog(@"i have been the source");
    }
}

这将检查segue是否将从转换当前的ViewController。