0

让我的代表“工作”有些困难。

它在 ClassA 通过 UINavigationController 将 ClassB 推送到堆栈上时起作用,但是当 ClassB 由不同的 ClassC 推送时,ClassB 不会调用委托方法(在 ClassA 中)。

ClassA 中的此方法有效:

- (void)openViewController:(NSString *)title:(int)dataType:(NSArray *)currentData {    
ClassB *nextController = [[ClassB alloc] initWithNibName:@"ClassBView" bundle:nil];
nextController.delegate = self;
nextController.title = title;
nextController.dataType = dataType;
nextController.currentData = currentData;
nextController.hidesBottomBarWhenPushed = YES;
[self.navigationController pushViewController:nextController animated:YES];}

如何从 ClassC 中获取此方法以正确地将 ClassA 指定为 ClassB 的委托???

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
ClassB *nextController = [[ClassB alloc] initWithNibName:@"ClassBView" bundle:nil];
    nextController.delegate = ??????????
    nextController.title = [self.tableData objectAtIndex:indexPath.row];
    nextController.dataType = self.dataType;
    nextController.currentData = [NSArray arrayWithArray:[self.dictionary objectForKey:[self.tableData objectAtIndex:indexPath.row]]];
    nextController.hidesBottomBarWhenPushed = YES;
[self.navigationController pushViewController:nextController animated:YES];}

感谢任何帮助。干杯。

4

1 回答 1

0

我觉得更多地了解应用程序中的视图控制器层次结构会有所帮助,但听起来你需要在 ClassC 中添加对 ClassA 的引用,它可以传递给 ClassB。所以(在 ​​C 类中)nextController.delegate = self.ClassARef

于 2012-08-01T15:31:17.753 回答