2014-12-02 2 views
-1

Tab Bar Viewtwo views이 있습니다. 내 second보기가 first보기에 텍스트 필드의 값이 변경되었을 때 알리 길 원합니다. 필요한 코딩을 모두했는데 문제가 하나 있습니다. first 뷰에 메서드 선언에 연결된 레이블 콘센트가 표시되지 않습니다. second보기위임 : 위임 된 메서드에 콘센트가 표시되지 않습니다.

코드 : first보기

- (IBAction)textFieldHasChanged:(UITextField *)sender { 

id<HPAAddCarOverallInfoTVCDelegate> strongDelegate = [[HPAAddCarMainViewController alloc] init]; 

if([strongDelegate respondsToSelector:@selector(addCarOverallInfoVC:textFieldValueChanged:)]) { 

    [strongDelegate addCarOverallInfoVC:self textFieldValueChanged:sender.text]; 
    } 
} 

코드 :

-(void)addCarOverallInfoVC:(HPAAddCarOverallInfoTableViewController *)viewController textFieldValueChanged:(NSString *)value 
{ 
self.overallVCFieldCount.text = value; 
NSLog(@"%@", value); 
} 

self.overallVCFieldCount.text = value; - 값은 존재하지만, 텍스트 입력란하지 않습니다. 내 생각으로

, 문제는이 코드 라인에 속하는 :

id<HPAAddCarOverallInfoTVCDelegate> strongDelegate = [[HPAAddCarMainViewController alloc] init]; 

것 같아요, 그 대리인이 내가 함께 일하고있는 정확한도 아니다. 입보기는 스토리 보드를 통해 동시에로드됩니다. 내 생각에 맞으면 제발 말해 줄 수 있습니까? 정확히 first보기로 포인터를 줄 수 있습니까? second보기가로드 될 때 탭 막대보기 컨트롤러가 화면에 표시 될 때?

+0

"첫 번째보기"를 대리인에게 지정해야합니다. strongDelegate = firstViewController와 같은 것입니다. 언제 어디에서 "첫 번째보기"를 초기화할지에 따라 달라집니다. –

답변

0

textFieldHasChanged에 새보기 컨트롤러를 만듭니다. 당신이 IB에서 해당 뷰 컨트롤러가있는 경우, 다음과 같이 인스턴스화 :

identifier
UIStoryboard *st = [UIStoryboard storyboardWithName:[[NSBundle mainBundle].infoDictionary objectForKey:@"UIMainStoryboardFile"] bundle:[NSBundle mainBundle]]; 
id<HPAAddCarOverallInfoTVCDelegate> strongDelegate = st instantiateViewControllerWithIdentifier:@"identifier"]; 

당신이 당신의 스토리 보드보기 컨트롤러를 준 식별자입니다.

+0

감사합니다. 이 제안은 위임 메소드를 트리거합니다. 하지만, 불행히도 나는 같은 행동을합니다 - 어떤 식 으로든 메서드 선언 내 textFields에 'value'를 할당 할 수는 없지만 메서드 밖에서 할 수는 있습니다. –