2015-06-19 41 views
2

时出现警告当我使用下面的代码呈现UIActivityController时,会显示它,但控制台显示“Warning: Attempt to present <UIActivityViewController: 0x7f8788e7aed0> on <MyApp.CustomTableViewController: 0x7f8788e3db60> which is already presenting (null)”。当呈现UIActivityViewController

@IBAction func shareImage(sender: AnyObject) { 
    let images: [UIImage] = [image.image!] 
    let activityViewController = UIActivityViewController(activityItems: images, applicationActivities: nil) 
    self.presentViewController(activityViewController, animated: true, completion: nil) 
} 

该func被UILongPressGestureRecognizer调用。请注意,我用故事板具有以下层次:

TabBarController>(关系)>NavigationController>(关系)>TableViewController>(显示)>TableViewController>(显示)>ViewController

演示发生在最后一个ViewController上。

我很确定它是关于层次结构,控制器当前呈现(以及可能如何)以及哪个控制器负责呈现UIActivityViewController

编辑

UILongPressGestureRecognizer触摸事件被多次调用这是导致出现该警告

回答

7

很难从你的问题,只是说是有这个情况发生的那一刻出现了一些其他视图控制器?例如和行动表或其他?

在任何情况下,试试这个:

if self.presentedViewController != nil { 
     self.dismissViewControllerAnimated(false, completion: { 
      [unowned self] in 
      self.presentViewController(activityViewController, animated: true, completion: nil) 
      }) 
    }else{ 
     self.presentViewController(activityViewController, animated: true, completion: nil) 
    } 
+2

都能跟得上没有在那一刻呈现的任何其他视图控制器。你的代码完美地显示了我的func被连续调用两次。一旦接触开始,一旦接触结束。卫生署! – Fabian

相关问题