2012-04-19 6 views
4

저는 iOS에서 커스텀 섹스를 가지고 놀았으며 가능한 한 많이 사용하여 스토리 보드에 응용 프로그램의 전체 워크 플로우를 시각화했습니다. popover segue를 만들 때 segue를 트리거하는 뷰 (popover의 위치를 ​​지정해야 함)를 알고 있지만 사용자 정의 segue를 만들 때 같은 방법을 찾을 수 없습니다. 커스텀 세그 (segue)에서 세그 (segue)를 시작한 뷰에 액세스하는 방법이 있습니까? 또한 런타임 인자를 뷰 컨트롤러에 전달할 수있는 것처럼 커스텀 매개 변수를 인터페이스 빌더에서 세그 (segue)로 전달하는 방법이 있습니까?맞춤 매개 변수에 추가 매개 변수를 전달하려면 어떻게해야합니까?

답변

6

당신은 방법을 구현하여 사용자 정의 SEGUE를 트리거 한보기에 액세스 할 수 있습니다

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 

을 ... 당신의보기 컨트롤러에.

이 메소드에서 보낸 사람의 값은 인터페이스 빌더를 사용하여 연결 한 경우 해당 세그먼트를 트리거 한보기가됩니다. 이 방법을 구현하는 경우, 그것은 다음과 같은 방법으로 트리거 된 것을 SEGUE 조회하는 것이 좋습니다 : "segueid는"당신이 인터페이스 빌더에서 SEGUE에 준 식별자 것

if ([[segue identifier] isEqualToString:@"segueid"]) 

....

두 번째 질문에 대해서는 인터페이스 작성기에서 세그 (segue)에 대한 매개 변수를 지정하는 방법을 알지 못하지만 동일한 "prepareForSegue"메서드를 사용하여 런타임시 View Controller에서 전달할 수 있습니다.

는 사용자 정의 SEGUE이 animationStyle라는 속성을 가지고 상상

방법을 수행하는 경우, 다음과 같은 수 있습니다 :의 당신이보기의 몇 가지가 있다고 가정 해 보자, 그런

- (void)perform 
{ 
    switch (self.animationStyle) { 
     case 0: 
      // TODO Perform animation type 0 
     case 1: 
      // TODO Perform animation type 1 
    } 
} 

을 사용자 지정 segue를 사용하려는 컨트롤러. 처음에 당신이 좋아하는 performSegue 방법을 구현할 수 있습니다 : 두 번째 뷰 컨트롤러에서 구현할 수 있지만

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if ([[segue identifier] isEqualToString:@"yourCustomSegueID"]) { 
     ((YourCustomSegueClass *)segue).animationStyle = 0; 
    } 
} 

그것을 좋아 :

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if ([[segue identifier] isEqualToString:@"yourCustomSegueID"]) { 
     ((YourCustomSegueClass *)segue).animationStyle = 1; 
    } 
} 

... 그래서 효과적으로 같은 정의를 재사용하는 다른 효과를 얻기위한 segue 클래스. IB가 당신이 segue를 직접 설정할 수는 없지만, 내가 아는 한 그 주위에 방법이 없다는 것은 여전히 ​​사실입니다.

+0

사용자 정의 segue가 일부보기 컨트롤러에만 한정되어 있지만 사용자 정의 애니메이션을 수행하고 IB에서 해당 매개 변수를 구성하기 위해 다시 사용할 수있는 사용자 정의 세그먼트를 만들지 않아도됩니다. – SoftMemes

+0

귀하의 우려를 이해하는 경우 확실하지 않습니다. 나는 스토리 보드의 다른 지점에서 커스텀 섹스를 재사용한다는 것을 알고있다. 필자가 알아야 할 것은 각 View Controller에서 "prepareForSegue"메서드를 구현 한 다음이를 사용하여 원하는 매개 변수를 해당 Segue에 할당하는 것입니다. 물론 다른보기 컨트롤러에서 다른 매개 변수를 전달하여 원하는 결과를 얻을 수 있습니다. – flainez

관련 문제