2014-09-25 7 views
0

에 컨테이너보기에서 IBAction를하기 위해 드래그 링크가 여기에 클럽스토리 보드, 부모

enter image description here

클럽이라는 사소한 VC의 기능이 있습니다. 분명히 Storyboard 에서 ButtonA의을 "Club"의 "clickMe"기능으로 드래그 할 수 있습니다.

지금. ButtonB에 관한.

스토리 보드에 버튼 B에서 '클럽'의 'clickMe'로 드래그하는 방법은 없나요?

아마도 신비한 "개체"개체를 사용하거나 ...?

@implementation SmallViewOnRight 
-(IBAction)sameAsClickMe 
    { 
    [(Club*)self.parentViewController clickMe]; 
    } 
@end 

그런 다음 ButtonB에서 sameAsClickMe에 드래그 할 수 있습니다 : 분명히, 당신은 작은 뷰 클래스를 만들고, 기능을 가질 수

참고. 그러나 그것은 완전히 귀찮은 일입니다.

메인보기의 다른 "영역"을 처리하기 위해 이와 같은 컨테이너보기를 사용하는 것은 매우 일반적입니다 (특히 물건을 미끄러 져 움직이는 경우 특히 여러 물건을 서로 위에 놓을 때). "). 컨테이너보기를 사용하여 기본보기 외부에서 "섹션"을 이동하는 것이 매우 편리합니다. 그러나 클릭을 "지나쳐"완전히 불쾌합니다.

Storyboard에서이를 수행 할 수있는 확실하지 않은 방법이 있습니까? 건배!

그냥 FTR, iOS7에 + 만 나이 아무것도

주 - "다른 방향"으로 가고 잘 탐구하고 할 수있을만큼 간단하지 않습니다.

+0

'보기 컨트롤러'를 '클럽'으로 설정하지 않으면 가능하지 않다고 생각합니다.코드에 의해'Club' 레퍼런스를 사용하고'club' 액션으로'buttonB'에서 호출 할 액션을 설정할 수 있습니다 (UI를 업데이트하거나 정교하게하기 위해 var/let이 필요하다면) – r4id4

+0

내 경험에 의하면 컨테이너 뷰의 포인트는 자체를 처리하는 별도의 뷰 컨트롤러를 사용하여 하나의 거대한 비 대한 UIViewController 클래스로 끝나지 않게하는 것입니다. 이 상황을 처리하는 방법은 두 번째 ViewController에 대한 프로토콜을 만들고 대리자를 ClubViewController 클래스로 설정하는 것입니다. 그런 다음 당신이 말한 것을 할 수 있고'sameAsClickMe' 메쏘드를 가질 수 있고 Delegate를 통해 ClubViewController의'clickMe' 메쏘드를 호출하게 할 수 있습니다. – sfeuerstein

+0

안녕 얘들 아! 스토리 보드에서 드래그 할 수 없다는 것은 기괴합니다. 왜냐하면 ** 둘 다 인스턴스화되어 ** 그렇게 할 수있는 이유가 없기 때문입니다. 신비한 "대상"물체에 대해 궁금합니다. 관련성이있을 수 있습니까? SFeuer, 내 긴 파라 ("참고 ...")에서 유스 케이스를 설명합니다. 아시다시피 컨테이너보기를 거의 "하위"영역으로 사용하지 않으면 서 실제로 복잡한 (특히 슬라이드) 화면을 만드는 것은 거의 불가능합니다. 수수께끼! – Fattie

답변

0

아니요, 그렇게 할 수는 없지만이 동작에 대리자를 사용할 수는 있습니다. SecondViewController.h에서

: SecondViewController.m에서

@protocol SecondViewControllerDelegate <NSObject> 
-(void)clickMe; 
@end 

@interface SecondViewController.h: UIViewController 

@property (weak, nonatomic) id <SecondViewControllerDelegate> delegate; 

@end 

:

@implementation SecondViewController 

- (IBAction) buttonBClicked:(id)sender { 
if ([self.delegate respondsToSelector:@selector(clickMe)] { 
     [self.delegate performSelector:@selector(clickMe)]; 
    } 
} 

@end 

ClubViewController.m 물 :

#import "SecondViewController.h" 
@interface ClubViewController() <SecondViewControllerDelegate> 
@end 

@implementation ClubViewController.m 

// make yourself a delegate of SecondViewController somewhere in your code. For example, in prepareForSegue. 

-(void)clickMe { 
    NSLog (@"Clicked"); 
} 

@end 

편집 : 푸는 푸근한 시도해보기! 나는 그들을 사용하는 방법에 대한 답변을 here 게시했습니다. 하지만 4 단계를 건너 뜁니다.

+0

델리게이트 사용의 좋은 예입니다! 내가 말했듯이, 당신은 사소한 것입니다 [self.parentViewController clickMe]; 이 상황에서 – Fattie

+0

나는 그것을 놓쳤다 :)! 하지만 효과가 있습니까? 나는 해고를 제외하고는 parentViewController에 메시지를 보내려고 시도한 적이 없다. – Razvan

+0

@JoeBlow 내 편집을 확인하십시오. – Razvan