मैं एक कस्टम विजेट बना रहा हूं जिसे मैं एकाधिक निब्स में उपयोग करना चाहता हूं। तो मैं एक नया दृश्य nib स्क्रीन 3 बना देता हूं, कुछ बटन जोड़ता हूं, और अब मेरा UIAwesomeSauce विजेट चाहता हूं।इंटरफ़ेस बिल्डर में किसी अन्य निब में कस्टम दृश्य लोड करने के लिए मुझे एक दृश्य कैसे प्राप्त हो सकता है?
यदि मैं सिर्फ एक दृश्य जोड़ता हूं और फिर कक्षा पहचान बदलता हूं, तो इसे UIAwesomeSauce nib से उप-प्राप्त नहीं मिलता है। अगर मैं लाइब्रेरी में जाता हूं और कक्षाओं में जाता हूं तो वही बात। ऐसा लगता है कि केवल एक UIViewController के पास "लोड से निब" का क्षेत्र है, जो सुंदर होगा।
मुझे पता है कि मैं कोड से UIAwesomeSauce nib लोड कर सकता हूं, शीर्ष स्तर की वस्तुओं को प्राप्त कर सकता हूं, और इसे हाथ से रख सकता हूं। लेकिन आईबी का मुद्दा यह है कि आपको चीजों को कोड में रखना नहीं है। इससे भी बेहतर होगा अगर मैं लाइब्रेरी सूची में दिखाने के लिए UIAwesomeSauce प्राप्त कर सकता हूं।
हल - निमरॉड द्वारा - विवरण और कोड
वैसे भी, Dood के लिए पढ़ते रहें, कि महान है। मैं अब मूर्खतापूर्ण सामान के लिए अपनी खुद की विजेट कक्षाएं बना सकता हूं। अपने यूआई के फाइलऑनर को अपनी कक्षा में रखें, और इसमें बस अपनी सभी सामग्री के साथ एक सामान्य UIView है। (विजेट के निब में एकल दृश्य कक्षा नहीं हो सकता है, या आप initWithCoder में रिकर्सिव प्राप्त कर सकते हैं।) फिर निब में आप इसका उपयोग करना चाहते हैं, एक वेनिला UIView बनाएं और अपनी कक्षा बदलें। आप वास्तव में उस वर्ग के अंदर विजेट को देखने में सक्षम नहीं होंगे, लेकिन सौदा करें।
स्वयं अब एक खाली दृश्य है, और tmyActualSelf एक ही दृश्य है जिसे आपने अन्य निब में काम किया है। वाह!
- (id)initWithCoder:(NSCoder*)coder
{
if ((self = [super initWithCoder:coder]))
{
UIView *tMyActualSelf = nil;
// Initialization code
NSArray *tNibItems = [[NSBundle mainBundle] loadNibNamed:@"UIAwesomeSauce" owner:self options:nil];
for (id object in tNibItems)
{
if ([object isKindOfClass:[UIView class]])
tMyActualSelf = (UIView *)[object retain];
}
if(tMyActualSelf)
{
tMyActualSelf.frame = CGRectMake(0, 0, self.frame.size.width, self.frame.size.height);
[self addSubview:tMyActualSelf];
}
}
return self;
}
यह इतना शानदार है कि मैं आपको एक पाई बनाना चाहता हूं। – CBGraham
हाँ! आखिर में पोस्ट पर मतदान करने के लिए मुझे पर्याप्त अंक मिल गए, इसलिए वहां जाएं। (आप अपने प्रश्नों पर पोस्ट पर वोट करने में सक्षम होना चाहिए, जैसे कि आप अपने प्रश्नों पर पोस्ट पर टिप्पणी कर सकते हैं।) – CBGraham
किसी के लिए (मेरे जैसा) जिसने प्रश्न स्कैन किया और जवाब को विस्तार से पढ़ा, पूछने वाले ने अपना "हल किया "कोड अपने मूल प्रश्न में एक संपादन के रूप में। –