2012-04-25 2 views
2

델리게이트를 사용할 때, 나는 대개 다음 viewcontroller에게 UINavigationController에서 자신을 위임자로 설정한다고 말합니다. 내 prepareForSegue 메서드에서이 작업을 수행합니다.segue.destinationViewController를 setDelegate 메서드의 리시버로 사용하지 않고 델리게이트를 설정하려면 어떻게해야합니까?

- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    [segue.destinationViewController setDelegate:self]; 
} 

이것은 항상 효과가있었습니다. 그러나 navController에서 viewController에 두 개의 인덱스 또는 두 개의 뷰를 전달하려고합니다. 즉 위임자로 self를 설정하려고합니다. 나는 모든 것을 시도했다. 나는 setDelegate 메소드를 보내려는 viewController 수신기를 정의한다고 생각할 수는 있지만 아무 것도 작동하지 않는 것 같다. 다음은 필자가 시도하는 것이 하나의 예는 다음과 같습니다

DateSelectViewController *dsvc = [[DateSelectViewController alloc] init]; 
    [dsvc setDelegate:self]; 

방법은 위임되고 있지 않습니다 나는 그것이 내가 다른 모든 가능성을 배제했기 때문에 나는 대리자를하고 있어요 방식과 관련이있다 알고있다. 이 작업을 올바르게 수행하려면 어떻게해야합니까?

답변

3

해당보기 컨트롤러가 아직 존재하지 않기 때문에 직접 할 수 없습니다. 당신이 할 수있는 것은이 따라 다음 중 하나에 있습니다

[segue.destinationViewController setDelegate:self.delegate]; 

당신이있는 경우 A ->B ->A에서 C

당신이 당신의 원본 코드 거라고 :

- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    [segue.destinationViewController setDelegate:self]; 
    // self == A 
} 

B에는 다음과 같이 표시됩니다.

- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    [segue.destinationViewController setDelegate:self.delegate]; 
    // self.delegate == A 
} 
관련 문제