使用UIActivityViewController共享内容后的空白屏幕

时间:2015-08-18 06:05:44

标签: ios swift uiactivityviewcontroller

我使用以下代码分享一些内容

var textToShare = "Test"
let activityVC = UIActivityViewController(activityItems: [textToShare], applicationActivities: nil)
activityVC.excludedActivityTypes = [UIActivityTypePrint, UIActivityTypeCopyToPasteboard, UIActivityTypeAssignToContact]

presentViewController(activityVC, animated: true, completion: nil)

但是当我按下取消按钮或成功共享内容时,应用程序显示一个空白屏幕。

如何解决此问题?

更新

当我为共享目标选择邮件或短信应用时,会出现空白屏幕,对于电报,Twitter和Facebook,它的工作正常。

我评论了生命周期方法中的所有代码,仍然是同样的问题。

override func viewDidAppear(animated: Bool)
{
    //setControlsAreHidden(true)
}

override func viewWillAppear(animated: Bool)
{
    //if dataAddedToView
    //{
    //     activityIndicator?.removeFromSuperview()
    //}

}

override func viewWillDisappear(animated: Bool)
{
    //setControlsAreHidden(false)
}

5 个答案:

答案 0 :(得分:1)

在呈现内容时,您首先需要检查视图控制器是否未被销毁。呈现视图控制器的生命周期管理例程(例如,ViewWillDisappear)中的一些调试语句可能会有所帮助。

如果问题源于ViewController消失,则需要适当地重新创建它。

另请查看您提供内容的任何地方:是否会在正确的时间触发绘制?

此外,确保您根据需要使用API​​(例如,在所需的所有方法中调用超类,例如视图控制器生命周期例程)。参见:

这些是我会关注和/或提供相关代码的领域。

答案 1 :(得分:1)

当您在当前MFMailComposeViewController上方提出MFMessageComposeViewControllerUIViewController时,如果您在发送邮件后解除MFMailComposeViewControllerMFMessageComposeViewController,那么UIViewController当视图再次出现时,将调用1}} viewWillAppear方法,因此在我看来,请检查viewWillAppearviewWillDisappear方法是否正在查看nil。< / p>

答案 2 :(得分:1)

我在viewDidAppear,viewWillAppear或viewWillDisappear方法中看不到对超级实现的任何调用。

如果你这样做会怎么样?:

override func viewDidAppear(animated: Bool)
{
    super.viewDidAppear(animated)
    //setControlsAreHidden(true)
}

override func viewWillAppear(animated: Bool)
{
    super.viewWillAppear(animated)
    //if dataAddedToView
    //{
    //     activityIndicator?.removeFromSuperview()
    //}

}

override func viewWillDisappear(animated: Bool)
{
    super.viewWillDisappear(animated)
    //setControlsAreHidden(false)
}

答案 3 :(得分:1)

也许你没有在正确的视图中展示活动视图控制器,尝试这样的事情:

#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v)  ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)

这是一个客观的C代码,但仅作为如何设置视图的示例。

如果您需要如何查看iOS版本:

§

答案 4 :(得分:1)

我遇到了同样的问题,并且能够通过调整我的主要UIView的大小限制来解决它。

之前的代码:

override func loadView() {
    self.view                                           = UIView()
    self.view.translatesAutoresizingMaskIntoConstraints = false
}

之后的代码:

override func loadView() {
    self.view                                           = UIView()
}

所以只需删除self.view.translatesAutoresizingMaskIntoConstraints = false

即可

这可能并不适用于所有人,但根据其他人的回答,我认为如何显示可能导致同样问题的视图存在各种问题。如果我的修复程序对您不起作用,我建议在问题消失之前注释掉所有不必要的代码,然后有条不紊地将小部分内容重新联机,在此过程中进行测试以确定您的问题。