TableView控制器中的代码
if ([segue.identifier isEqualToString:@"showListFiles"]) {
NSIndexPath *ip = [self.tableView indexPathForSelectedRow];
if (ip.section == 0) {
NSDictionary *currentBill = [[_response objectForKey:@"facturas_pendientes"] objectAtIndex:ip.row];
DkBPaymentViewController *pvc = [[DkBPaymentViewController alloc] init];
pvc = (DkBPaymentViewController *) segue.destinationViewController;
pvc.setUp = currentBill;
}
else if(ip.section == 1){
DkBBillsFileTableViewController *ftvc = segue.destinationViewController;
ftvc.filesList = [[[_response objectForKey:@"facturas_pagadas"] objectAtIndex:ip.row] objectForKey:@"archivos_facturas"];
}
}
错误
-[DkBBillsFileTableViewController setSetUp:]: unrecognized selector sent to instance 0x85a3b00
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[DkBBillsFileTableViewController setSetUp:]: unrecognized selector sent to instance 0x85a3b00'
如何根据表格部分(第1部分支付/第2部分付费)条件转换到不同视图控制器的最佳方法是什么?
详情
DkbPaymentViewController拥有它自己的xib,因为我不能让原型单元指向两个不同的
DkBBillsFileTableViewController是我声明的原始segue
非常感谢你,我相信在tableview中找到一个好的条件segue方法会让所有人受益。
答案 0 :(得分:2)
您可以以编程方式执行此操作。在故事板中,从视图控制器(而不是从单元格)中绘制两个segue。然后在didSelectRowAtIndexPath
中,执行以下操作:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if (indexPath.section == 0) {
[self performSegueWithIdentifier:@"SegueForSection1" sender:indexPath];
} else if (indexPath.section == 1) {
[self performSegueWithIdentifier:@"SegueForSection2" sender:indexPath];
}
}
答案 1 :(得分:1)
您应该设置2个不同的单元格,每个单元格链接到不同的segues(因此它们具有不同的标识符),并且每个单元格指向不同的视图控制器。这将使您的代码变得微不足道,防止类之间的混淆并按预期使用segue。