1、当一个控制器上,有多个segue时,且在方法中定义了一个类为另一个类的代理时,在prepare方法中需要判断目标控制器为哪个,并分段执行代码,否则程序将出错
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
YHedditViewCOntroller *eddit = segue.destinationViewController
eddit.delegate = self
}
调整添加后的代码
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
// Get the new view controller using [segue destinationViewController].
// Pass the selected object to the new view controller.
//取得控制器
UIViewController *vc = segue.destinationViewController;
//判断目标控制器的类型
if ([vc isKindOfClass:[addViewController class]]) {
addViewController *addVc = (addViewController *)vc;
//设置代理
addVc.delegate = self;
}else if([vc isKindOfClass:[editViewController class]]){
editViewController *edit = (editViewController *)vc;
//获取cell当前选中的行的行号
NSInteger didselectrow = [self.tableView indexPathForSelectedRow].row;
DataModel *data = self.ContactData[didselectrow];
edit.data = data;
}
}