मुझे पता है कि यह सवाल पहले पूछा गया है, लेकिन जवाब विरोधाभासी हैं और मैं उलझन में हूं, इसलिए कृपया मुझे ज्वाला न दें।
मैं UIView
अपने पूरे ऐप में एक पुन: प्रयोज्य उपवर्ग रखना चाहता हूं। मैं एक नीब फ़ाइल का उपयोग करके इंटरफ़ेस का वर्णन करना चाहता हूं।
अब कहते हैं कि यह एक लोडिंग इंडिकेटर व्यू है जिसमें एक्टिविटी इंडिकेटर है। मैं कुछ घटना पर इस दृश्य और एक दृश्य नियंत्रक के दृश्य में चेतन करना चाहते हैं। मैं दृश्य के इंटरफ़ेस को प्रोग्रामेटिक रूप से कोई समस्या नहीं बता सकता, तत्वों को प्रोग्रामेटिक रूप से बनाना और उनके फ्रेम को एक इनिट विधि आदि के अंदर सेट करना।
हालांकि मैं एक नीब का उपयोग करके यह कैसे कर सकता हूं? फ़्रेम सेट करने के बिना इंटरफ़ेस बिल्डर में दिए गए आकार को बनाए रखना।
मैं इसे इस तरह से करने में कामयाब रहा, लेकिन मुझे यकीन है कि यह गलत है (यह सिर्फ एक बीनने वाला एक दृश्य है):
- (id)initWithDataSource:(NSDictionary *)dataSource {
self = [super init];
if (self){
self = [[[NSBundle mainBundle] loadNibNamed:[NSString stringWithFormat:@"%@", [self class]] owner:self options:nil] objectAtIndex:0];
self.pickerViewData = dataSource;
[self configurePickerView];
}
return self;
}
लेकिन मैं स्वयं को अधिलेखित कर रहा हूं, और जब मैं इसे त्वरित करता हूं:
FSASelectView *selectView = [[FSASelectView alloc] initWithDataSource:selectViewDictionary];
selectView.delegate = self;
selectView.frame = CGRectMake(0, self.view.bottom + 50, [FSASelectView width], [FSASelectView height]);
मुझे इसे आईबी से लेने के बजाए फ्रेम को मैन्युअल रूप से सेट करना होगा।
संपादित करें: मैं इस कस्टम दृश्य को एक दृश्य नियंत्रक में बनाना चाहता हूं, और दृश्य के तत्वों को नियंत्रित करने के लिए पहुंच रखता हूं। मुझे नया व्यू कंट्रोलर नहीं चाहिए।
धन्यवाद
संपादित करें: मुझे नहीं पता कि यह सबसे अच्छा अभ्यास है, मुझे यकीन है कि यह नहीं है, लेकिन यह है कि मैंने यह कैसे किया:
FSASelectView *selectView = [[[NSBundle mainBundle] loadNibNamed:[NSString stringWithFormat:@"%@",[FSASelectView class]] owner:self options:nil] objectAtIndex:0];
selectView.delegate = self;
[selectView configurePickerViewWithData:ds];
selectView.frame = CGRectMake(0, self.view.bottom + 50, selectView.width, selectView.height);
selectView.alpha = 0.9;
[self.view addSubview:selectView];
[UIView animateWithDuration: 0.25 delay: 0 options:UIViewAnimationOptionAllowUserInteraction |UIViewAnimationOptionCurveEaseInOut animations:^{
selectView.frame = CGRectMake(0, self.view.bottom - selectView.height, selectView.width, selectView.height);
selectView.alpha = 1;
} completion:^(BOOL finished) {
}];
सही अभ्यास अभी भी चाहता था
क्या इसे निब नाम के साथ एक व्यू कंट्रोलर और इनिट का उपयोग किया जाना चाहिए था? क्या मुझे कोड में कुछ UIView आरंभीकरण विधि में nib को सेट करना चाहिए? या क्या मैंने ठीक किया है?
initWithDataSource
? वैसे भी यह तब भी काम करेगा जब आप मालिक को 'निल' के रूप में देंगे।