ios - "Warning: Attempt to present... on... whose view is not..." issue when presenting from a childVC -- -
in short, i'm presenting view childvc that's been added view hierarchy, apparently hasn't been added window hierarchy yet.
i've started project , set page-based project. boiler uipageviewcontroller added included rootviewcontroller is:
override func viewdidload() { super.viewdidload() // additional setup after loading view, typically nib. // configure page view controller , add child view controller. self.pageviewcontroller = uipageviewcontroller(transitionstyle: .scroll, navigationorientation: .horizontal, options: nil) self.pageviewcontroller!.delegate = self let startingviewcontroller: cameraviewcontroller = self.modelcontroller.viewcontrolleratindex(0, storyboard: self.storyboard!)! let viewcontrollers = [startingviewcontroller] self.pageviewcontroller!.setviewcontrollers(viewcontrollers, direction: .forward, animated: false, completion: {done in }) self.pageviewcontroller!.datasource = self.modelcontroller self.addchildviewcontroller(self.pageviewcontroller!) self.view.addsubview(self.pageviewcontroller!.view) // !! -- viewdidappear cameraviewcontroller called here // set page view controller's bounds using inset rect self's view visible around edges of pages. var pageviewrect = self.view.bounds if uidevice.currentdevice().userinterfaceidiom == .pad { pageviewrect = cgrectinset(pageviewrect, 40.0, 40.0) } self.pageviewcontroller!.view.frame = pageviewrect self.pageviewcontroller!.didmovetoparentviewcontroller(self) // add page view controller's gesture recognizers book view controller's view gestures started more easily. self.view.gesturerecognizers = self.pageviewcontroller!.gesturerecognizers } the line changed setting own vc startingviewcontroller:
let startingviewcontroller: cameraviewcontroller = self.modelcontroller.viewcontrolleratindex(0, storyboard: self.storyboard!)! i'm trying have first screen camera - imagepickervc. here code that. can see, adding uiimageview camerviewcontroller show preview, trying first present uiimagepickercontroller on viewdidappear:
import uikit class cameraviewcontroller: uiviewcontroller, uinavigationcontrollerdelegate, uiimagepickercontrollerdelegate { @iboutlet var imageview: uiimageview! @ibaction func didtapcamerabutton(sender: anyobject) { presentimagepicker(); } var dataobject: anyobject? var imagepicker: uiimagepickercontroller! override func viewdidload() { super.viewdidload() // additional setup after loading view, typically nib. } override func viewdidappear(animated: bool) { super.viewdidappear(animated); presentimagepicker(); } override func didreceivememorywarning() { super.didreceivememorywarning() // dispose of resources can recreated. } func presentimagepicker() { imagepicker = uiimagepickercontroller() imagepicker.delegate = self imagepicker.sourcetype = .camera presentviewcontroller(imagepicker, animated: false, completion: { () -> void in println("save bolean") }) } func imagepickercontroller(picker: uiimagepickercontroller, didfinishpickingmediawithinfo info: [nsobject : anyobject]) { imagepicker.dismissviewcontrolleranimated(true, completion: nil) imageview.image = info[uiimagepickercontrolleroriginalimage] as? uiimage } } however, i'm getting warning , imagepicker never presented:
warning: attempt present <uiimagepickercontroller: 0x14e833a00> on <here.cameraviewcontroller: 0x14e614af0> view not in window hierarchy! i've set breakpoints , found viewdidappear cameraviewcontroller called on line when adding pageviewcontroller rootviewcontroller:
self.view.addsubview(self.pageviewcontroller!.view) // !! -- viewdidappear cameraviewcontroller called here this seems should why error? view got added it's in rootviewcontroller's view hierarchy.
i added button present uiimagepickercontroller manually cameraviewcontroller. presents find without problem.
Comments
Post a Comment