2012-05-05 81 views
1

我有一个UITableView,用于使用MFMailComposeViewController发送电子邮件。它第一次正确显示数据。如果我发送或取消电子邮件,那么从那时起,我会看到一个空白屏幕(换句话说,我无法再发送电子邮件)。如何重新加载TabBar控制器中的视图?

当我回到视图再次发送电子邮件时,它是空白的,因此该视图需要重新加载,因为它原来是。

我需要做些什么来解决这个问题? (我在Storyboard和ARC中使用XCode4)。

+0

您如何展示邮件编辑器? – JustSid

+0

这是你在找什么? MFMailComposeViewController * mailer = [[MFMailComposeViewController alloc] init]; mailer.mailComposeDelegate = self; //设置代理来通知我们发生了什么' – SpokaneDude

+0

不,我的意思是你如何显示它?你是把它推到一个'UINavigationController'上还是作为一个模型视图控制器或...? – JustSid

回答

0

滥用API:当使用UITabBarController时,viewDidLoad仅在视图加载开始时调用一次。因此,当您将代码放入viewDidLoad时,它只会执行一次。通过将该代码移动到viewWillAppear,它每次都会被加载。

+1

只是FYI:'viewDidLoad:'总是只在viewController的生命周期中调用一次。 (只有在这种情况下,视图才会由于内存问题而被卸载,当需要时它会再次加载)。 – calimarkus

0

尝试在电子邮件发送或取消后直接在[self.view setNeedsDisplay]上重新加载解除电子邮件的视图。

编辑:如何[emailView resignFirstResponder]; ?

+0

不......没有做任何事......但是,我注意到了这一点:[self dismissModalViewControllerAnimated:YES];我不认为这是“模态”......会导致问题吗? – SpokaneDude

+0

我不知道,needsDisplay是一个猜测,我一直只是再次添加子视图,像[firstview addSubview:viewIWantToReload] – DuskFall

相关问题