2015-06-21 72 views
0

我想要顯示一個表視圖控制器。因此我在下面的completionwithitemshandler屬性中顯示視圖控制器。其視圖不在窗口層次結構中? Swift

let activityViewController = UIActivityViewController(activityItems:[memeedimage] , applicationActivities: nil) 
     presentViewController(activityViewController, animated: true, completion: nil) 

    activityViewController.completionWithItemsHandler = { 
     (activity, success, returneditems, error) in 
     println("Activity: \(activity) Success: \(success) Items: \(returneditems) Error: \(error)") 
     self.save() 
     activityViewController.dismissViewControllerAnimated(true, completion: nil) 

     let memevc:MemeTableViewController = MemeTableViewController() 
     activityViewController.presentViewController(memevc, animated: true, completion: nil) 
    } 

,但我得到以下運行時錯誤:

Warning: Attempt to present <MemeMe.MemeTableViewController: 0x7fc4b6179600> on <UIActivityViewController: 0x7fc4b6148180> whose view is not in the window hierarchy! 

所以我相信它的東西與我這有一個可選的數據類型梅梅對象的解纏。

func save(){ 
     var meme : MemeObject? 
     if let memez = meme{ 
      meme = MemeObject(textFieldtop : texfieldtop.text! ,textFieldbottom : textfieldbottom.text! ,image : imagePickerView.image! , memedImage : generateMemedImage()) 
      (UIApplication.sharedApplication().delegate as! AppDelegate).memes.append(meme!) 
     } 
     else{ 
      println("Optionals man") 
     } 


    } 

回答

0

問題是您解僱了UIActivityViewController,然後嘗試從它呈現另一個視圖控制器。相反,你想要從你展示活動視圖控制器的相同視圖控制器呈現新的視圖控制器。

例如,您可以在活動視圖控制器後出現新的視圖控制器解僱完成:

let activityViewController = UIActivityViewController(activityItems:[memeedimage] , applicationActivities: nil) 
     presentViewController(activityViewController, animated: true, completion: nil) 


    activityViewController.completionWithItemsHandler = { 
     (activity, success, returneditems, error) in 
     println("Activity: \(activity) Success: \(success) Items: \(returneditems) Error: \(error)") 
     self.save() 
     activityViewController.dismissViewControllerAnimated(true, completion: { 
      let memevc:MemeTableViewController = MemeTableViewController() 
     self.presentViewController(memevc, animated: true, completion: nil) 
}) 

注意:您最初的「presentViewController」你並不需要使用self.presentViewController()但是因爲新的調用在使用self.presentViewController()的塊內部,所以它明確表示它是應該呈現它的自我。

+0

完成參數的意思是什麼? –

+0

@SyedAriff對不起,我在這裏寫了一篇文章,並被卡在Objective-C塊世界。我更新了文章,只是有Swift風格的封閉。 –

相關問題