2011-07-12 12 views
7

के लिए आईबी में कस्टम यूआईसींट्रोल सबक्लास सेट स्थिति मैं एक यूआईसींट्रोल सबक्लास बना रहा हूं और प्रोग्रामेटिक रूप से इसमें सब कुछ डालने के लिए। अब जब मैंने इसे बनाया है तो मुझे इसे विभिन्न स्क्रीन पर कई बार रखने की आवश्यकता है। मुझे पता है कि आप आईओएस के लिए आईबी प्लगइन नहीं बना सकते हैं, लेकिन आईबी और आकार में यूआईवीव लेने का कोई तरीका नहीं है, जहां मेरा नियंत्रण होना चाहिए, और उसके बाद 'कस्टम क्लास प्रॉपर्टी को मेरा यूआईसींट्रोल का सबक्लास होना चाहिए ? मुझे पता है कि मैं इसे आईबी में वास्तव में दिखाने का तरीका नहीं देखूंगा, लेकिन कम से कम यह मुझे स्क्रीन पर अन्य चीजों के सापेक्ष समग्र आकार और प्लेसमेंट सेट करने देता है। मैंने अपने दृश्य नियंत्रक में आईबीओटलेट भी बनाए हैं और आईबी में उनके साथ दृश्य को सही ढंग से कनेक्ट किया है। हालांकि जब मैं दौड़ता हूं तो मुझे कोई अनुकूलन नहीं दिखाई देता है, और जब मैं initWithFrame: या loadView में ब्रेकपॉइंट्स सेट करता हूं तो मुझे कभी नहीं पता कि मेरा कोड कहलाया जा रहा है। मुझे यह कैसे करना चाहिए?आईओएस

+0

आईबी/एक्सकोड का कौन सा संस्करण आप उपयोग कर रहे हैं? – bshirley

+0

'initWithCoder: 'जब किसी ऑब्जेक्ट को निब से लोड किया जाता है, तो उसे कॉल किया जाता है, तो आप वैकल्पिक रूप से' awakeFromNib' – bshirley

+0

एक्सकोड 4.0.1 का उपयोग कर ओवरराइड कर सकते हैं। @bshirley मैंने सोचा कि यह मामला था, इसलिए मैंने 'लोडव्यू' में ब्रेकपॉइंट्स भी सेट किए जिन्हें किसी भी मामले में बुलाया जाना चाहिए। – jamone

उत्तर

10

आप एक UIView को nib फ़ाइल पर खींच सकते हैं, फिर कक्षा को UIView के किसी भी उप-वर्ग में बदलने के लिए पहचान निरीक्षक (कमांड-ऑप्ट -3) का उपयोग करें।

आप initWithFrame: में प्रवर्तन कोड में उपवर्गों जब एक निब से लोड कहा जाता हो जाता है कि, अर्थात नहीं स्थापित करने के लिए की आवश्यकता होगी। यदि आप पूर्णता के लिए कोडिंग कर रहे हैं, तो दोनों विधियों (प्रोग्रामेटिक और निब-आधारित) को समान प्रारंभिक कॉल करना चाहिए।

यदि आप चाहें, तो प्रारंभिक कोड में केवल addSubview: बनाएं और फिर अपने कस्टम सबव्यूज़ लेआउट के लिए layoutSubviews लागू करें। इसे किसी भी समय दृश्य के आकार के साथ-साथ शुरू में भी बदला जाएगा।

+0

मैं एक मूर्ख हूँ। 'loadView'' UIView' पर एक विधि नहीं है, लेकिन 'UIViewController' पर है। अन्य तो यह गुस्से में मैंने बिल्कुल इस तरह से – jamone

+1

डी ओह - वह * एक समस्या होगी =) – bshirley