该问题涉及在UINavigation控制器样式中使用许多视图的应用程序。代理中的MFMailComposeViewController
我有我委托一个简单的功能,可以通过所有视图可用于绘制出错误信息
//在Appdelegate.m现在
-(void)popErrorWindow:(NSString *)theError
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:nil message:theError
delegate:self cancelButtonTitle:@"OK" otherButtonTitles:@"Report",nil];
[alert show];
[alert release];
}
- (void)alertView:(UIAlertView *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {
if (buttonIndex == 1)
{
NSLog(@"report");
[self mailIt:@"error name"];
}
}
,希望有一种机制,将与一些其他数据一起发送电子邮件的错误我已经创造了这个:
-(void)mailIt:(NSString *)theError {
NSLog(@"Mail it");
pickerMail = [[MFMailComposeViewController alloc] init];
pickerMail.mailComposeDelegate = self;
[pickerMail setSubject:@"error via email"];
NSMutableString *body = [NSMutableString string];
[body appendString:@"Error XXX "];
[pickerMail setMessageBody:body isHTML:YES];
// Problem here:
[self.window presentModalViewController:pickerMail animated:YES];
}
- (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error
{
// Problem here:
[self.window dismissModalViewControllerAnimated:YES];
//NSLog(@"mail was sent");
}
的问题是在self.window,这是不是从委托访问的正确方法, 我仍然希望在委托中具有邮件元素,因为所有视图都可以调用错误警报,并且我希望只有一个位置用于此机制。
我应该怎样从委托内部做些什么来取代self.window?
那么:[self.window presentModalViewController:pickerMail animated:YES]; – chewy
我已编辑我的回答 – klefevre
致谢至此kl94, 加入:[self.navigationController.parentViewController presentViewController:pickerMail]; 我得到的错误: 语义问题:方法'-presentViewController:'未找到(返回类型默认为'id') – chewy