谁的视图不在 window 层次结构中? Swift
Whose view is not in the window hierarchy? Swift
我想要显示一个 table 视图控制器。因此,我在下面 completionwithitemshandler
属性 中展示了视图控制器。
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!
所以我认为这与我解包具有可选数据类型的 meme 对象有关。
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")
}
}
问题是您正在关闭 UIActivityViewController,然后尝试从中呈现另一个视图控制器。相反,您想要的是从显示 activity 视图控制器的同一视图控制器中显示新的视图控制器。
例如,您可以在 activity 视图控制器关闭完成后显示新的视图控制器:
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() 的块内,所以它明确表示应该呈现它的是自我。
我想要显示一个 table 视图控制器。因此,我在下面 completionwithitemshandler
属性 中展示了视图控制器。
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!
所以我认为这与我解包具有可选数据类型的 meme 对象有关。
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")
}
}
问题是您正在关闭 UIActivityViewController,然后尝试从中呈现另一个视图控制器。相反,您想要的是从显示 activity 视图控制器的同一视图控制器中显示新的视图控制器。
例如,您可以在 activity 视图控制器关闭完成后显示新的视图控制器:
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() 的块内,所以它明确表示应该呈现它的是自我。