이 dateSelectViewController라는 방법은 프로토콜로 내 .H 파일에 선언 한 I : 저는 대리자를 프로토콜 아래왜이 대리인입니까? 프로토콜이 응답하지 않습니다.
@class DateSelectViewController;
@protocol DateSelectViewControllerDelegate
- (void)dateSelectViewController:(DateSelectViewController *)sender
theDate:(id)stringDate;
@end
선언하고 있습니다 :
@property (nonatomic, weak) id <DateSelectViewControllerDelegate> delegate;
및 구현 파일에
, I 대리자를 합성하고 완료 버튼을 내보기에 누를 때 나는 대리인에게 메시지를 보내- (IBAction)DonePressed:(id)sender {
NSDate *chosen = [datePicker date];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"MM/dd/yyyy"];
NSString *formatedDate = [formatter stringFromDate:chosen];
//sending a message to the delegate
[self.delegate dateSelectViewController:self theDate:formatedDate];
[self.navigationController popViewControllerAnimated:YES];
}
.H 되 고 파일 드에서 legated, delegators .h 파일을 가져오고 있습니다. .m 파일에서 나는 프로토콜을 따르고 있습니다.
@interface MakePlantTVC()<DateSelectViewControllerDelegate>
- (void)dateSelectViewController:(DateSelectViewController *)sender
theDate:(id)stringDate
{
self.displayDate.text = stringDate;
NSLog(@"delegate working");
}
어떤 이유인지 이것도 전혀 작동하지 않습니다. 위임자 클래스에서 완료 버튼을 누르면 버튼이 정상적으로 수행되고 뷰 컨트롤러가 팝업되지만 메시지는 절대 위임자에게 전송되지 않습니다. 처음에는 메시지를 보낼 수있을 것이라고 생각했지만 유형 ID는 없으므로 그렇지 않아야합니다. 메시지가 전송되지 않는 이유는 무엇입니까?
위임자에게 메시지를 보내기 전에'NSLog (@ "delegate = % @", self.delegate)'를 추가하십시오. – zrxq
위임자를 설정 했습니까? – Roshit
위임자에게 메시지를 전달하는 동안이 조건을 사용하여 대리인의 가용성을 확인하는 것이 좋음'if (self.delegate && [self.delegate respondsToSelector : @selector (method_name)]) {[self.delegate method_name ]}' – Roshit