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

アプリのView Controller階層についてもっと知っておくと役立つと思いますが、ClassBに渡すことができるClassCのClassAへの参照を追加する必要があるようです。だから(ClassCで)nextController.delegate = self.ClassARef

于 2012-08-01T15:31:17.753 に答える