私だったら、デリゲートの代わりに通知を使用します。つまり、detailViewController 内で valueChanged を使用して segmentedControl 値の変更を検出し、masterViewController が受け取る detailViewcontroller から NSNotification を送信します。
最も簡単な方法は次のとおりです。
[[NSNotificationCenter defaultCenter] postNotificationName:@"segmentOneChosen" object:nil userInfo:nil];
この通知に masterViewController を登録してもらいます。
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(segmentOneChosen) name:@"segmentOneChosen" object:nil];
選択した値を通知とともに渡す方がよいので、セグメントごとに個別の通知は必要ありません。
!! テストされていないコード:
NSArray *keys = [NSArray arrayWithObjects:@"segmentChosen", nil];
NSArray *objects = [NSArray arrayWithObjects:[NSNumber numberWithInt:self.topicsChoiceSegControl.selectedSegmentIndex], nil];
NSDictionary * dict = [NSDictionary dictionaryWithObjects:objects forKeys:keys];
[[NSNotificationCenter defaultCenter] postNotificationName:@"segmentChosen" object:nil userInfo:dict];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(segmentChosen:) name:@"segmentChosen" object:nil];
-(void) segmentChosen:(NSNotification *)notification {
NSNumber *segmentChosenNum = [[notification userInfo] valueForKey:@"segmentChosen"];
}
これはあなたの質問自体には答えないことはわかっていますが、克服しようとしている問題に対する代替ソリューションを提供します。