2010-01-11 22 views
15

का उपयोग करते समय इंटरफ़ेस बिल्डर में छवियां मैं मोनो टच और आईफोन विकास के लिए नया हूं। मेरे पास मोनो डेवेल में संसाधन फ़ोल्डर में मेरी छवियां (पीएनजी) है, हालांकि अगर मैं इंटरफ़ेस बिल्डर में एक बटन के लिए छवि प्रॉपर्टी सेट करना चाहता हूं, तो मैं यह कैसे कर सकता हूं? यह हमेशा एक खाली ड्रॉपडाउन है। क्या मुझे XIB फ़ाइल तक पहुंचने के लिए एक्सकोड का उपयोग करने की आवश्यकता है और फिर किसी भी तरह बटन छवि फ़ाइल को एम्बेड करें, मुझे इसकी आवश्यकता होगी?मोनो टच

+0

मुझे मोनोचouch के बारे में कुछ भी पता नहीं है, लेकिन इंटरफेस बिल्डर के लिए मेरे अनुभव में एक छवि फ़ाइल को "देखने" के लिए फ़ाइल को उसी एक्सकोड प्रोजेक्ट का हिस्सा होना चाहिए जो xib फ़ाइल का हिस्सा है। आप वास्तव में छवि फ़ाइल को xib फ़ाइल में एम्बेड नहीं करते हैं, लेकिन निब लोडर सामान्य रूप से केवल एप्लिकेशन बंडल से संसाधन लोड कर सकता है, और जब आप किसी एक्सकोड प्रोजेक्ट में कोई छवि जोड़ते हैं तो उसे उस फ़ाइल के रूप में जोड़ा जाता है जो उसमें होगा निर्मित आवेदन बंडल। इसलिए, आईबी उम्मीद करता है कि एक्सकोड परियोजना संसाधनों को निब (xib) फ़ाइलों में संदर्भित करने के लिए वैध फाइलें होंगी क्योंकि इसमें कुछ आश्वासन है कि वे रनटाइम पर होंगे। – Nimrod

उत्तर

11

This is a known limitation of MonoDevelop and Interface Builder। इंटरफेस बिल्डर में एक्सआईबी में छवियों को जोड़ने के लिए उन्हें एक्सकोड प्रोजेक्ट का हिस्सा होना चाहिए, जो निश्चित रूप से मोनो डेवेल से आ रहे हैं, वे नहीं हैं।

जो आप करने का प्रयास कर रहे हैं उसे प्राप्त करने के लिए आपको छवि के माध्यम से छवि सेट करने की आवश्यकता होगी, और सुनिश्चित करें कि आपकी छवि का निर्माण कार्य सामग्री पर सेट है। ऐसा करने के लिए, बस MonoDevelop के अंदर अपनी छवि पर राइट क्लिक करें, और बिल्ड एक्शन> सामग्री का चयन करें।

उस पर बटन के साथ अपने दृश्य पर, अपने बटन के लिए इंटरफ़ेस बिल्डर में आउटलेट बनाएं, इसे हुक करें, फिर कोड से अपनी छवि सेट करने के लिए, आपको केवल FromFile ("पथ/नाम") का उपयोग करने की आवश्यकता है। UIImage की विधि।

UIImage buttonImage = UIImage.FromFile ("resources/image.png"); 
myButton.SetBackgroundImage (buttonImage,UIControlState.Normal); 

यह मेरे सिर के ऊपर से है, लेकिन मुझे लगता है कि इसे करना चाहिए।

+2

आप अभी भी इंटरफ़ेस बिल्डर में छवि सेट कर सकते हैं, जब आप संपादन कर रहे हों तो वे बस आईबी में दिखाई नहीं देंगे। छवि को मोनोटच में रूट डायर में जोड़ें, ऊपर की सामग्री के रूप में सेट करें, और आईबी में छवि को "myimage.png" पर सेट करें। संपादन के दौरान आपको एक प्रश्न चिह्न दिखाई देगा, लेकिन रनटाइम के दौरान छवि दिखाई देगी। –

+0

महान उत्तर के लिए वोट दें। – bharath

5

आप मैन्युअल रूप से इंटरफ़ेस बिल्डर में छवि सेट कर सकते हैं, लेकिन यह रन टाइम तक दिखाई नहीं देगा। छवि नाम में पथ शामिल हो सकता है, उदा। "छवियों/settings.png"।

3

मुझे यह काम करने के लिए भी जरूरी था, यहां एक कामकाज मिला है। आपको एक डमी xcode प्रोजेक्ट बनाने की आवश्यकता है। इसे अपने प्रोजेक्ट के समान फ़ोल्डर में रखें। अपनी सभी xib फ़ाइलों और छवि फ़ाइलों को उस एक्सकोड प्रोजेक्ट में जोड़ें जब उन्हें एक्सकोड में प्रोजेक्ट खोला जाए। अब आप छवियों का पूर्वावलोकन देख पाएंगे। छवि फ़ाइलों को एक ही फ़ोल्डर में होना चाहिए क्योंकि प्रोजेक्ट फ़ाइल और इंटरफ़ेस बिल्डर खोले जाने पर डमी प्रोजेक्ट के साथ एक्सकोड खोला जाना चाहिए। बहुत अच्छा नहीं है - लेकिन अब इस मुद्दे को हल करता है। Here एक नमूना प्रोजेक्ट है जिसे मैंने बनाया है।

इस मुद्दे को मोनो डेवलपमेंट पक्ष पर हल करने के लिए - कुछ अंतर-प्रक्रिया संचार कोड बनाने की आवश्यकता है, मुझे लगता है कि एक अच्छा प्रारंभिक बिंदु Google में "PBXProjectWatcherServerConnection-3.1.2" की तलाश करेगा।

+0

यह काम करता है ... तरह का। जब मैं इंटरफेस बिल्डर में एक तस्वीर का चयन करता हूं, तो यह सिर्फ तस्वीर के तत्काल नाम का उपयोग करता है, और फ़ाइल पथ को अनदेखा करता है। यदि मैं इंटरफ़ेस बिल्डर में फ़ाइल पथ जोड़ता हूं, तो छवि प्रश्न चिह्न पर वापस जाती है। क्या यह पथ के साथ काम करने का कोई तरीका है? –

4

यहां दिए गए सभी समाधान पूरी तरह से गलत और भ्रामक हैं। आपको बस इतना करना है, संसाधन छवियों (प्रोजेक्ट रूट पर) में अपनी छवियां रखें, और अपनी छवियों को इस फ़ोल्डर में जोड़ें। इस फ़ोल्डर में फ़ाइलों को जोड़ने के बाद, सभी फाइलों को चिह्नित करें और सुनिश्चित करें कि उनकी बिल्ड कार्रवाई BundleResource पर सेट है।

+0

यह विशेषताएं केवल 2012 में ही शामिल थीं, इसलिए पिछले उत्तरों सही थे, लेकिन अब पुराने हैं। डेवलपर के एक ही प्रश्न के उत्तर के लिए यहां देखें: http://stackoverflow.com/a/11493599/66131। वैसे भी, आपका जवाब पूरी तरह से काम किया, तो धन्यवाद! –

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