2013-03-21 2 views
1

제목이 분명하지는 않더라도 유감스럽게 생각하지만 여기에서 자세히 설명 할 수 있습니다.목적지에 프로그래밍 방식으로 호출 된 segue의 발신자

저는 팀에서 럭비 선수를 나타내는 22 개의 버튼을 표시하는 ViewController MatchLineupViewController이 있습니다. 사용자가이 버튼 중 하나를 탭하면, 모달 SEGUE는 다음과 같은 방법으로 프로그램 호출 : 다음 표시됩니다

- (IBAction) showSquadSelector:(UIButton *)sender { 
    [self performSegueWithIdentifier:@"SeguePopupSquad" sender:sender]; 
} 

모달의 ViewController가 SquadSelectViewController라고합니다. 선택한 플레이어 개체가 대리자 역할을 수행하는 MatchLineupViewController으로 전달됩니다. 이것은 완벽하게 작동합니다.

그러나 첫 번째 위치에 세그먼트를 보낸 UIButton에 반환 된 개체의 profile_picture 특성을 할당하고 싶습니다.

편집 - 다음 코드와 같이 반환 된 객체가있는 NSDictionary입니다 :

- (void) selectPlayer:(NSDictionary *)player forButton:(UIButton *)sender { 
    [sender.imageView setImage:[UIImage imageWithContentsOfFile:[player objectForKey:@"profile_picture"]]]; 
} 

어떻게 이렇게 가겠어요? 내가 묻고있는 것을 이해하기 위해 더 많은 코드가 필요하다면, 나는 그것을 제공 할 수있다.

많은 감사, 크리스

편집 -

- (IBAction) showSquadSelector:(UIButton *)sender { 
    [self performSegueWithIdentifier:@"SeguePopupSquad" sender:sender]; 
} 

- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
    if ([segue.identifier isEqualToString:@"SeguePopupSquad"]) { 
     SquadSelectViewController *ssvc = (SquadSelectViewController *) segue.destinationViewController; 
     ssvc.myDelegate = self; 
     ssvc.senderButton = sender; 
    } 
} 

- (void) selectPlayer:(NSDictionary *)player forButton:(UIButton *)sender { 
    [sender.imageView setImage:[UIImage imageWithContentsOfFile:[player objectForKey:@"profile_picture"]]]; 
    NSLog(@"%@", [player description]); 
    NSLog(@"%@", [sender description]); 
} 
+0

"반환 된 개체가 무엇입니까?"- 반환 된 개체는 무엇입니까? –

+0

반환 된 개체는 이름, 프로필 사진 및 데이터베이스 ID와 같은 플레이어 데이터의 NSDictionary입니다. Delegate를 사용하여 "자식"ViewController에서 다시 "부모"ViewController로 전송됩니다. - (무효) selectPlayer (NSDictionary와 *) 플레이어 위임 방법, –

+0

이어서 { NSDictionary에 리턴되는 가 // 일}'사전 [@ "profile_picture"] = theButton; ', 그인가? –

답변

1

당신이처럼 SEGUE에 showSquadSelector: 방법의 sender을 전달할 수 있습니다 :

[self performSegueWithIdentifier:@"SeguePopupSquad" sender:sender]; 

sender의 segue는 segue를 트리거 한 버튼이 될 것이므로 t segue에서 트리거 된 코드는 어떤 버튼이 트리거했는지 알 수 있습니다. prepareForSegue:은 올바른 UIButton입니다. 이제이를 사전에 지정된 키 (예 : @"senderButton")로 반환 된 사전에 추가하고 해당 부분에서 돌아 왔을 때 검사 할 수 있습니다.

+0

나는 이것을 시도하고 내 질문에 업데이트 된 코드를 게시했습니다. 그것은 작동하지 않는 것 같습니다. 나는 어딘가에서 버튼을 잘못 전달하고있는 것 같아요? –

+2

아직 버튼이 있다면 로깅을 확인하십시오.하지만 보통 'setImage : forControlState :'로 버튼의 이미지를 설정합니다. 이미지 뷰에 직접 할당하면 단추가 하위 뷰를 재 배열하여 표시 할 수 없습니다. – jrturton

+0

@ChrisMatthews, 대상보기 컨트롤러의 콘센트가 prepareForSegue에 설정되어 있지 않으므로 ssvc.senderButton = sender를 수행하면 작동하지 않습니다 (senderButton은 0이됩니다). – rdelmar

관련 문제