2011-09-29 6 views
6

segue 객체를 사용하여 대상보기 컨트롤러의 속성을 변경하는 방법은 두 개의보기 컨트롤러간에 segue를 구현하는 중입니까? 문서에서는 prepareForSegue : sender : 메소드 내부에서이를 수행 할 수 있다고 말합니다. 나는 그것을 시도했지만 성공하지 못했습니다.iOS 5 연속 구현

답변

13

Dunno는 이것에 대한 답이 필요하지만 외로운 게시물이었고, 정확하다면 더 이상 NDA에 속하지 않습니다. 내가 틀렸다면 내 답변을 망각으로 조절하십시오, 그래서 여기에 있습니다 : 나는 방금 당신이 필요로하는 것을 사용하는 일을 마쳤습니다. 이것은 나를 위해 작동하는 코드입니다 :

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if ([[segue identifier] isEqualToString:@"relevantSegueIdentifier"]) 
    { 
     // [segue destinationViewController] is read-only, so in order to 
     // write to that view controller you'll have to locally instantiate 
     // it here: 
     ViewController *upcomingViewController = [segue destinationViewController]; 

     // You now have a solid reference to the upcoming/destination view 
     // controller. Example use: Allocate and initialize some property of 
     // the destination view controller before you reach it and inject a 
     // reference to the current view controller into the upcoming one: 
     upcomingViewController.someProperty = [[SomePropertyClass alloc] initWithString:@"Whatever!"]; 
     upcomingViewController.initialViewController = [segue sourceViewController]; 
     // Or, equivalent, but more straightforward: 
     //upcomingViewController.initialViewController = self; 
    } 
} 

이것은 someProperty와 initialViewController가 둘 다 대상 뷰 컨트롤러의 합성 된 접근 자라고 가정합니다. 희망이 도움이!

+0

NDA에 속하지만 3 일 만에 공식 릴리스가 10 월 14 일에 나올 것입니다.하지만 제가 답변을 좋아합니다. –

+0

당신이 말한 것을 시도했지만 제 'destinationViewController'의 속성은 업데이트되지 않습니다. . 어떤 충고? – Francesco

+0

대상보기 컨트롤러의 합성 된 액세서 (사설 ivar가 아닌)를 사용하고 뷰 컨트롤러가 이미 앱 설정 중에 인스턴스화되어 있다고 가정합니다 (즉, 실제보기 컨트롤러가 배치 된 스토리 보드, 그 사이의 모든 인스턴스가 @ app 쏘다). 이 경우 작동해야합니다. 그런 다음 특정 목적지에 대해 알지 못하는 시스템과 같은 것일 수 있습니다. 보기 컨트롤러 클래스. ViewController 클래스는 UIViewController의 하위 클래스이며 @implementation 전에 '#import "와 같은 작업을 수행합니다. ViewController.h". 이러한 것들 중 하나 일 수 있습니까? – DarqueSandu

0

나는이 주제에 관한 비디오를 만들었습니다. 나는 그것이 도움이되기를 바랍니다. 나는 소스 뷰 컨트롤러에서 사용하는 어떤 http://full.sc/17yKkZF

0

은 다음과 같습니다

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    UIViewController *upcomingViewController = [segue destinationViewController]; 
    upcomingViewController.view.tag = [[segue identifier] hash]; 
} 

다음 대상 뷰 컨트롤러에서 I합니다 (viewDidAppear의 예를 들어 사용)

if(self.view.tag == [@"MySeqgueIdentifier" hash]) 
{ 
    // Do something here... 
} 

이 있기 때문에, 멋지다을 사용 속성 등을 만들 필요가 없으며 모든 것이 인터페이스 작성기에서 올바르게 작동합니다.