我已经预先在我的应用代理中分配了邮件和消息控制器,以便在用户使用我的应用程序时保存初始化时间(超过10秒)...
__mailController = [[MFMailComposeViewController alloc] init];
__messageController = [[MFMessageComposeViewController alloc] init];
第一次显示控制器时工作正常,然后下次没有更改信息并且仍显示旧信息? ...控制器是否可能被解除分配?奇怪的是,只要消息不正确,视图才能正常工作?
- (IBAction)actionSMS:(id)sender {
if([MFMessageComposeViewController canSendText])
{
self.messageController.body = self.MessageDetail.text;
// controller.recipients = [NSArray arrayWithObjects:@"+919999999999", nil];
[self presentModalViewController:self.messageController animated:YES];
}
}
答案 0 :(得分:1)
向用户显示MFMailComposeViewController和MFMessageComposeViewController后,您无法更改其显示的内容。
MFMailComposeViewController Class Reference:
重要事项邮件撰写界面本身不可自定义 并且不得被您的申请修改。 此外,之后 提供界面,不允许您的申请 进一步更改电子邮件内容。用户可能仍在编辑 使用界面的内容,但程序化更改将被忽略。 因此,您必须在呈现之前设置内容字段的值 接口
这意味着在您呈现控制器时,这些值在某种程度上被锁定在MFM * ViewController的实现中。所以你不能重用这些viewControllers。 iOS并不关心控制器是否与您的情况一样不可见。如果出现,则内容被锁定。
我想弄清楚为什么分配它们需要10秒钟。然后转储整个预分配的东西。 10秒肯定是很多。
答案 1 :(得分:0)
我遇到了同样的问题。 MF控制器不仅仅适合一次性使用,正如您所发现的那样,它们也无法在后台初始化,因为它们的UI元素需要在主线程中初始化。
最后,我只是通过HUD呈现UIActivityIndicatorView,这样用户就会知道该应用正在响应。