2016-07-03 11 views
5

मैं एक प्रोजेक्ट पर काम कर रहा हूं जो टैबबार सिस्टम का उपयोग करता है। टैबबार की एक वस्तु जॉबपोस्टिंगविंग कंट्रोलर है। मैं इसे UINavigationController में एम्बेड करें। इस दृश्य नियंत्रक में नया जॉब जोड़ने वाला यूआईबटन है। मैंने CreateJobPostViewController जाने के लिए pushviewcontroller लागू किया। वहां मुझे छवि चुनने के लिए UIImagePickerController जोड़ने की आवश्यकता है। जब मैं पूरा बटन टैप करता हूं या लाइब्रेरी से एक छवि चुनता हूं तो यह जॉबपोस्टिंगिंग व्यू कंट्रोलर को खारिज कर देता है। लेकिन इसे CreateJobPostViewController पर जाना चाहिए। कोई भी मेरी मदद करें। अग्रिम में धन्यवाद। UIImagePickerController को खारिज करने से दृश्य नियंत्रक को भी खारिज कर दिया गया है

@IBAction func openCreateJob(sender: AnyObject) { 
    let vc = self.storyboard?.instantiateViewControllerWithIdentifier("CreateJobPostViewController") as! CreateJobPostViewController 
    self.navigationController?.pushViewController(vc, animated: true) 
} 

कोड CreateJobPostViewController में JobPostingViewController

में

You can see the issue from this link

कोड

@IBAction func addImages(sender: AnyObject) { 
    imagePicker.allowsEditing = false 
    imagePicker.sourceType = .PhotoLibrary 
    presentViewController(imagePicker, animated: true, completion: nil) 
} 
func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) { 
    picker.dismissViewControllerAnimated(true, completion: nil) 
} 
func imagePickerControllerDidCancel(picker: UIImagePickerController) { 
    picker.dismissViewControllerAnimated(true, completion: nil) 
} 
+0

मैंने पहले कभी इस समस्या को नहीं देखा है। 'addImages' कहलाए जाने से पहले 'imagePicker' पहले ही परिभाषित किया जा रहा है। क्यूं कर? क्या यह कहीं और इस्तेमाल किया जा रहा है? क्या एक ही समय में कोई अन्य कोड काम कर रहा है? इसके अलावा आप 'picker.dismissViewControllerAnimated' को कॉल कर रहे हैं, आप मानते हैं कि मॉड्यूल नियंत्रक को खारिज करने के लिए अभिभावक (प्रस्तुत करने वाला व्यू कंट्रोलर) से पूछना है (यानी' self.dismissViewControllerAnimated') प्रस्तुत करने के लिए प्रस्तुत न करें। –

+0

यह वैश्विक चर के रूप में छवि पिकर को परिभाषित करने का एक और अर्थ नहीं बनाता है। इसका उपयोग कहीं भी नहीं किया जाता है। मैंने छवि पिकर व्यू कंट्रोलर को खारिज करने के लिए सुझाए गए दोनों विकल्पों का प्रयास किया। मैं समाधान खोजने के थक गया था और मैं एक और तरीका का उपयोग करता हूं। आपका सुझाव देने के लिए धन्यवाद। @ साइमन मैकलोफलिन – sant05

+0

क्या आप अधिक कोड पोस्ट कर सकते हैं या ऐप के लेआउट को और अधिक समझा सकते हैं। कई समान मुद्दों और समाधानों पर प्रकाश डालने वाले बहुत से लोग हैं। क्या 'जॉबपोस्टिंगविंग कंट्रोलर' एक कंटेनर व्यू है? या एक कंटेनर दृश्य के अंदर? यह स्क्रीन कैसे खोली गई है? जब पिकर को खारिज कर दिया जाता है तो यह 'CreateJobPostViewController' पर 'viewWillAppear' /' viewDidAppear', 'viewDidLayoutSubviews' विधियों को ट्रिगर करेगा। क्या आप इन तरीकों के अंदर कुछ कर रहे हैं? –

उत्तर

4

subview के रूप पिकर जोड़ना

imagepicker जोड़ने के लिए के रूप में अपने CreateJobPostViewController को एक subview यह पेश की insted कोशिश करते हैं और उसके बाद delegtes

@IBAction func openCreateJob(sender: AnyObject) { 

var picker: UIImagePickerController = UIImagePickerController() 
picker.delegate = self 
picker.allowsEditing = false 
picker.sourceType = .PhotoLibrary 
self.addChildViewController(picker) 
picker.didMoveToParentViewController(self) 
self.view!.addSubview(picker.view!) 
} 

और फिर

func imagePickerControllerDidCancel(picker: UIImagePickerController) { 

    picker.view!.removeFromSuperview() 
    picker.removeFromParentViewController() 
    } 

पेश के लिए में माता-पिता से हटाने

मौजूदा कॉन्टेक्स्ट पर पिकर दिखा रहा है जैसे विकल्पों को रद्द करें,

उपयोग picker.modalPresentationStyle = .overCurrentContext // पेश चित्र पिकर के modalPresentationStyle करने के लिए "OverCurrentContext" की स्थापना करके यह

presentViewController(picker, animated: true, completion: nil) 
+0

वाह आपको बहुत बहुत धन्यवाद :) – sant05

+0

मैं नेविगेशन बार और टैब बार के ऊपर पिकर दिखाना चाहता हूं जिसका अर्थ है पूरी स्क्रीन पर। क्या आप मेरी मदद कर सकते हैं? – sant05

+0

आप अपने पिकर नियंत्रक को self.navigationcontroller के सबव्यूव के रूप में जोड़कर ऐसा कर सकते हैं जैसे [self.navigationController.view addSubview: picker] – AnshaD

8

मुद्दा फिक्स्ड से पहले:

picker.modalPresentationStyle = .overCurrentContext 
+1

द्वारा यह वास्तव में मेरे लिए इसे ठीक करता है। VisualWillDisappear विधि को मूल दृश्य नियंत्रक पर अब नहीं बुलाया गया था। – Alex

+1

यह करने का यह सही तरीका है। स्वीकृत उत्तर एक हैकी एक है। – Basanth

3

आप इस्तेमाल कर सकते हैं:

picker.modalPresentationStyle = .overCurrentContext 

लेकिन आपकी स्क्रीन के आधार पर लेआउट, इसका इस्तेमाल करने के लिए बेहतर हो सकता है:

picker.modalPresentationStyle = .overFullScreen 

अन्यथा अपने "रद्द", "फिर से लेने के" और "तस्वीर का उपयोग करें" बटन दिखाई नहीं हो सकता है।

0

मुझे यह वही समस्या थी, मैंने इसे स्टोरीबोर्ड (एक्सकोड v9 का उपयोग करके हल किया।2)

1 - स्टोरीबोर्ड, जहाँ आपके ViewController है पर जाएँ, चयन यह

Select ViewController

2 - प्रस्तुति के रूप में सेट: वर्तमान संदर्भ

Set current context

नोट: यदि यह वर्तमान संदर्भ काम नहीं करता है, वर्तमान संदर्भ से अधिक चुनें

संबंधित मुद्दे

 संबंधित मुद्दे