2015-06-21 4 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. –

Смежные вопросы