2012-10-05 14 views
5

मेरे पास UITableViewCell से विरासत में एक कस्टम टेबल सेल है। यह ठीक काम कर रहा है।आईओएस प्रोजेक्ट में XIB फ़ाइल का उत्तराधिकारी कैसे प्राप्त करें?

अब मुझे कुछ अन्य स्क्रीन के लिए थोड़ा बदलाव के साथ एक ही प्रकार का सेल बनाना है। मैं क्या योजना बना रहा था कि मैं अपने पुराने सेल वर्ग को अपने डिजाइन और तर्क का पुन: उपयोग करने के लिए वारिस करूँगा, लेकिन मुझे एक xib फ़ाइल का वारिस करने का कोई तरीका नहीं मिला।

क्या मुझे सभी दृश्यों को एक xib से दूसरे में कॉपी/पेस्ट करना चाहिए या क्या कुछ बदलावों के साथ इसे विस्तारित करने का कोई तरीका है?

संपादित करें: मैं निम्न सवालों पढ़ लिया है और वे कहते हैं कि इसके संभव नहीं अभी दावा:

मामले यह नामुमकिन है, क्या दृष्टिकोण हम का उपयोग करना चाहिए इसे प्रभावी ढंग से करें?

उत्तर

0

आपको फ़ाइल को डुप्लिकेट करना चाहिए और आवश्यक परिवर्तन करना चाहिए।

धन्यवाद

+0

जबकि OO संदर्भ में सोच, मैं दोहराव से बचने की कोशिश कर रहा था है, – Ans

0

कुछ भी नहीं XIB संपादक है कि आप प्रोग्राम नहीं कर सकते कर सकते हैं नहीं है। सबसे आसान तरीका (आमतौर पर) इसे कोड पर ले जाने के लिए है और फिर सभी लक्ष्यों/परियोजनाओं से XIB को हटा दें। फिर आप उपclass कर सकते हैं हालांकि आप पसंद करते हैं।

बोनस के रूप में, यह आपके एकाधिक लक्ष्यों के लिए संसाधनों के प्रबंधन को वास्तव में सरल बना सकता है।

इसे कोड पर ले जाने का एक विकल्प केवल संशोधित भागों को अन्य उदाहरणों (सेल द्वारा आयोजित/संदर्भित) में स्थानांतरित करना है। नियंत्रक प्रस्तुति से पहले इस विशेषता को सेट कर सकता था। इसलिए यदि किसी संबंध में स्टाइलिज़ेशन और ड्राइंग विशेष या अनुकूलन योग्य थी, तो बस उस तर्क को कक्षा पदानुक्रम में ले जाएं जो XIB deserialization पर भरोसा नहीं करता है और फिर उस भाग के उन हिस्सों को गुण बनाता है जिन्हें आपने निब में परिभाषित किया है।

0

यदि आप अपनी समस्या के लिए कुछ अन्य समाधान ढूंढ रहे हैं, तो मैं आपको एक कस्टम सेल प्रोग्रामेटिक रूप से बनाने का सुझाव दूंगा।

मैं आपको चरण-दर-चरण समझा रहा हूं, इससे आपको बेहतर मदद मिलेगी।

तो इसके लिए UITableViewCell से प्राप्त एक वर्ग बनाएं, और अपने टैबलेटसेल में आवश्यक घटकों को जोड़ें।

इसलिए आपकी .h फ़ाइल इस तरह दिखती है।

// -------- स्टार्ट ------- >>

#import <UIKit/UIKit.h> 

@interface CustomCell : UITableViewCell{ 

UIButton *btn1; 
UIButton *btn2; 
UIButton *btn3; 

} 

@property(nonatomic , retain) UIButton *btn1; 
@property(nonatomic , retain) UIButton *btn2; 
@property(nonatomic , retain) UIButton *btn3; 

@end 

// ------- अंत ------- < <

और आपका।मीटर फ़ाइल इस

// -------- स्टार्ट ------- >> तरह दिखेगा

#import "CustomCell.h" 

    @implementation CustomCell 
    @synthesize btn1, btn2, btn3; 

    - (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier 
    { 
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; 
    if (self) { 

    //----frame the components as per your project req.----  

    btn1 = [[UIButton alloc] initWithFrame:CGRectMake(1, 1, 85, 70)]; 
    [self.contentView addSubview:btn1]; 

    btn2 = [[UIButton alloc] initWithFrame:CGRectMake(100, 1, 85, 70)]; 
    [self.contentView addSubview:btn2]; 

    btn3 = [[UIButton alloc] initWithFrame:CGRectMake(195,1, 85, 70)]; 
    [self.contentView addSubview:btn3]; 
    } 
    return self; 
    } 

    - (void)setSelected:(BOOL)selected animated:(BOOL)animated 
    { 
    [super setSelected:selected animated:animated]; 

     // Configure the view for the selected state 
    } 

// -------- अंत- ------ < <

अब आप अपने अन्य वर्गों में इस कस्टम सेल का पुन: उपयोग करने के लिए तैयार हैं। और आवश्यकता के अनुसार उन्हें संशोधित भी कर सकते हैं।

cellForRowAtIndexPath में अब >>

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath; 
{ 

static NSString *CellIdentifier = @"Cell"; 

CustomCell *cell = (CustomCell*)[tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 


if (cell == nil) 
{ 
    cell = [[CustomCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] ; 
} 

    [cell.btN1 setImage:[UIImage imageNamed:@"YOUR IMAGE NAME"] forState:UIControlStateNormal]; // YOU CAN MAKE CHANGES HERE. 

    ................// remaining logic goes here 

return cell; 

} 

आशा है कि यह तुम्हारी मदद करेगा।

1 .Also take a look on link tutorial.

2. A Closer Look at Table View Cells

+0

मुझे लगता है कि आपने मेरा प्रश्न नहीं पढ़ा है; मेरे पास UITableViewCell क्लास से पहले से ही एक कस्टम सेल विरासत है; मुझे पता है कि टेबल व्यू के लिए कस्टम सेल कैसे बनाएं; मुझे एक स्तर अधिक विरासत की आवश्यकता है, सीधे यूआईटीबल व्यूसेल से नहीं, बल्कि मेरी खुद की कस्टम सेल क्लास से, और महत्वपूर्ण रूप से xib फ़ाइल दृश्य का पुन: उपयोग करना; – Ans

0

तुम सिर्फ कस्टम सेल दृश्य वर्ग उपवर्गीकरण की कोशिश की है? इस तरह आप सभी यूआई घटकों के लिए बेस क्लास में आईबीओटलेट्स और नए उप-वर्ग में आप उन्हें नए व्यवहार के अनुसार प्रबंधित कर सकते हैं। यह सिर्फ एक UIView या एक UIViewController उपवर्गीकरण जैसा होगा आदि

0

यह मेरे लिए एक बार हुआ है और क्या मैंने किया है:

उपवर्गीकरण के बजाय

मैं customCell के साथ एक अलग UIView होने तालिका बना दिया है और कि subview के रूप दृश्य जोड़ा गया जहां जरूरत है। मैं कस्टमसेल में कुंजी के साथ कस्टमसेल में यूआई को बदलने में सक्षम था, यह जानने के लिए कि UIViewController इसे सबव्यू के रूप में जोड़ रहा है।

मुझे यकीन है कि कितना अच्छा इस दृष्टिकोण है नहीं कर रहा हूँ, लेकिन अभी भी एक तरह से :)