테이블 뷰를 표시하는 뷰 컨트롤러가 있습니다. 벤처 캐피탈이 사용자에게 전송 SMS보기를 표시하기 위해 다른 VC를 호출이 SMS에 대한 코드는 VC는 다음과 같습니다 MFMessageComposeViewController가 표시되고 해제 된 후 뷰가 올바르게 표시되지 않음
- (void) sendSMSWithBody: (NSString*) body andRecipients: (NSArray*) recipients
{
MFMessageComposeViewController *controller = [[MFMessageComposeViewController alloc] init];
if ([MFMessageComposeViewController canSendText])
{
controller.messageComposeDelegate = self;
controller.body = body;
controller.recipients = recipients;
[[UIApplication sharedApplication].delegate.window.rootViewController addChildViewController:self];
[self presentModalViewController:controller animated:YES];
}
}
- (void) messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result
{
[self dismissModalViewControllerAnimated:YES];
[[UIApplication sharedApplication].delegate.window.rootViewController removeFromParentViewController];
}
(나는 sharedApplication에 대한 호출이 조금 해키 알고 있지만 지금은 충분합니다. rootViewController 테이블 뷰 컨트롤러에 설정 루트 컨트롤러)
내가 지금처럼 테이블 VC에서 SMS VC를 호출하고이있는 UINavigationController가 있습니다 :
- (void) viewDidAppear:(BOOL)animated
{
static BOOL presentedSMSVC = NO;
if (!presentedSMSVC)
{
SendSMSController *sendSMS = [[SendSMSController alloc] init];
[sendSMS sendSMSWithBody:@"body"
andRecipients:[NSArray arrayWithObject:@"123456789"]];
presentedRegisterVC = YES;
}
}
문제는 그 사용자는 SMS를 전송 한 후 테이블 뷰 셀이 표시되지 않습니다.
내가보기/테이블을 새로 고쳐야하므로 사용자가 SMS를 보낼 때 호출 된 첫 번째 VC에 프로토콜 콜백을 추가 한 다음 콜백 호출에서 프로토콜 콜백을 추가해야한다고 생각했습니다. [self.tableView reloadData] 그러나 그것은 아무런 효과가 없었다.
그래서 나는 중간 클래스 제거와 같은 직접 SMS보기를 표시하는 테이블 뷰 편집있어 : didFinishWithResult : 전화를받을 않습니다
- (void) viewDidAppear:(BOOL)animated
{
static BOOL presentedRegisterVC = NO;
if (!presentedRegisterVC)
{
MFMessageComposeViewController *controller = [[MFMessageComposeViewController alloc] init];
if ([MFMessageComposeViewController canSendText])
{
controller.messageComposeDelegate = self;
controller.body = @"body";
controller.recipients = [NSArray arrayWithObject:@"12345678"];
[self presentModalViewController:controller animated:NO];
}
}
}
- (void) messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result
{
[self dismissModalViewControllerAnimated:NO];
}
그러나 messageComposeViewController하지만 지금은 MFMessageComposeViewController이 (해고하지 않습니다
)두 방법 모두의 문제점은 무엇입니까?
: 제 변종 감사
나는 또한 현재를 변경하고 줄을 [self.navigationController presentModalViewController 및 dismiss]로 닫으려고 시도했지만 여전히 두 번째 업데이트 된 변종에서는 닫지 않습니다. – Gruntcakes