내 앱에는 많은 NIB 중 하나에서 "문의하기"를 클릭 할 때마다 actionSheet를 표시하는 공통 클래스가 있습니다.IOS5 : NSObject 클래스에서 이메일을 호출하는 방법
사용자가 actionSheet 팝업에서 "Email Us"를 선택하면 동일한 공용 클래스에서 전자 메일 메서드를 호출하고 싶습니다. 조사 후 나는이 구현 :
-(void)SendEmail {
rootViewController = (UIViewController*)
[(AppDelegate*)[[UIApplication sharedApplication] delegate] viewController];
// compose
MFMailComposeViewController* controller = [[MFMailComposeViewController alloc] init];
controller.mailComposeDelegate = rootViewController;
//format message
NSArray *recipientsArray = [[NSArray alloc] initWithObjects:@"[email protected]", nil];
[controller setToRecipients:recipientsArray];
[controller setSubject:[NSString stringWithFormat:@"A question about %@",string]];
[controller setMessageBody:outputMutString isHTML:YES];
//send
if (controller) [rootViewController presentModalViewController:controller animated:YES];
}
// didFinishWithResult
- (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error;{
if (result == MFMailComposeResultSent) {
}
[rootViewController dismissModalViewControllerAnimated:YES];
}
이것은 그러나 새 이메일, 시작됩니다 : 모달 뷰가 그대로
가 didFinishWithResult이 작동하지 않습니다 이메일을 보내거나 취소 버튼을 누른 후에도 제거되지 않았습니다.
이 경고 메시지가 나타납니다 : 호환되지 않는 유형의 'id'에 할당 'UIViewController * __ strong' controller.mailComposeDelegate = rootViewController;
감사합니다.
안녕 Inafziger : 그것은 비슷한 모양 당신의 RootViewController.h 파일에
즉
는 인터페이스 선언에 그 부분을 추가합니다. 별도의 "RootViewController"클래스를 만들지 않았습니다. 공통 클래스에 "UIViewController * rootViewController"라는 객체를 만들었습니다. 내가 가지고있는 것을 사용할 수있는 방법이 있는가, 아니면 별도의 클래스를 사용하는 유일한 해결책인지 (너무 복잡해 보임). – Jeremy죄송합니다. 나는 그것을 보지 못했습니다. 이 코드가있는 공통 클래스에서 동일한 작업을 수행 할 수 있습니다. 컨트롤러 만 변경하십시오. mailCompose를 self로 지우십시오. – lnafziger
이 기능을 사용하셨습니까? – lnafziger