2013-10-20 1 views
2

2 개의 뷰 콘트롤러가 있는데, 두 개의 뷰 콘트롤러가 있습니다. 내 주요 viewcontroller는 ViewController입니다. 내 두 번째 viewcontroller PreferencesViewController라는 내 기본 ViewController 일부 값을 변경해야하는 단추가 있습니다. 그러나 그것은 ...대리자가 다른 viewcontroller에서 호출되지 않았으므로 모든 것을 시도했습니다.

내가 스택 오버플로에 대한 몇 가지 예에서 본 것처럼() 나는 위임 프로토콜을 설정했다. <PreferencesViewControllerDelegate>

가 나는 또한 주요의 ViewController의 내 구현 방법을 구현 :

나는 또한 내 주요의 ViewController에 PreferencesViewController.h 파일을 가져온, aswell 나는 대리자가되도록의 ViewController 말했다. 그러나이 메서드는 단추를 누를 때 호출되지 않습니다. 나는 내 IBAction에 [self.delegate methodExample];을 구현했습니다.

위임자 설정에 대해 많이 읽었습니다. 이 일을 어디에서해야합니까? 내 PreferenceViewController 인스턴스를 만들고 할당/초기화해야합니까? 나는 이것을 시도한 다음 인스턴스 instance.delegate = self하지만 그 얘기도 작동하지 않았다 ...

누군가 나를 도울 수 있기를 바랍니다!

답변

1

위임자를 설정해야하는 것은 맞습니다. segues를 사용할 때이 작업을 수행하는 가장 쉬운 방법은 prepareForSegue:sender: 메서드를 사용하는 소스보기 컨트롤러 (이 경우 ViewController)입니다. 이 메소드에게 건네지는 segue 객체는, destination view controller 에의 참조를 가지고 있습니다. 당신은 아마 같은 것을하고 싶지 : 당신이 segues를 사용하고 있기 때문에

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
    if ([segue.identifier isEqualToString:@"Your preferences segue identifier"]) { 
     PreferencesViewController *preferencesViewController = 
segue.destinationViewController; 
     preferencesViewController.delegate = self; 
    } 
} 

, 시스템이 당신을 위해 새로운 뷰 컨트롤러의 ALLOC/초기화를하고있다을; 이 메소드는 시스템에 의해 호출되어 새로운 뷰 컨트롤러가 표시되기 전에 연결되도록합니다.

+0

바로 문제가 해결되었습니다. 고마워요! –

관련 문제