2012-03-22 4 views
7

आईओएस ऐप्स में, हमें UITableView#dequeueReusableCellWithIdentifier का उपयोग करने से पहले हमारे टेबल व्यू के साथ निब फाइलों को पंजीकृत करना होगा।मैं कैसे जांच सकता हूं कि एक पुन: उपयोग पहचानकर्ता पहले से UITableView के साथ पंजीकृत है या नहीं?

उदाहरण:

static NSString *myReuseIdentifier = @"MyReuseIdentifier"; 
UINib *cellNib = [UINib nibWithNibName:myReuseIdentifier bundle:nil]; 
[self.tableView registerNib:cellNib forCellReuseIdentifier:myReuseIdentifier]; 

वहाँ अगर एक नोक पहले से ही एक UITableView में पंजीकृत हो जाएगा जाँच करने के लिए कोई तरीका है?

मेरे पास एक कस्टम सेल है जिसका उपयोग मैं अपने ऐप में कई नियंत्रकों में विभिन्न तालिकाओं में करता हूं। मैं कुछ कोड को मैक्रो में ले जाना चाहता हूं।

-(CustomCell *)customCell:(UITableView *)tableView 
{ 
    static NSString *reuseIdentifier = @"MyReuseIdentifier"; 
    if (![table hasAlreadyRegisteredNib:reuseIdentifier]){ 
     UINib *cellNib = [UINib nibWithNibName:reuseIdentifier bundle:nil]; 
     [self.tableView registerNib:cellNib forCellReuseIdentifier:reuseIdentifier];  
    } 
    CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:reuseIdentifier]; 
    return cell; 
} 
+0

आपडिडलोड विधि में अपना निब क्यों पंजीकृत नहीं करते हैं? – JiaYow

+0

क्योंकि मैं इसे एक मैक्रो में चिपकाना चाहता हूं जो कई नियंत्रकों में साझा किया गया है – bodacious

+0

लेकिन चूंकि आपके पास विभिन्न टेबल हैं, इसलिए आपको प्रत्येक तालिका के लिए निब पंजीकृत करना होगा। –

उत्तर

4

की तरह कुछ मैं अगर यह है कि तुम क्या करना चाहते हैं, लेकिन

-dequeueReusableCellWithIdentifier: 

रिटर्न nil अगर सेल का पुन: उपयोग करने के लिए तैयार नहीं है यकीन नहीं है। अन्यथा, यह सेल लौटाता है, ताकि आप बस कोशिश कर सकें।

+0

ग्रेट टिप! तो मैं जांच सकता हूं कि सेल शून्य था, अगर ऐसा है तो मैं टेबल के साथ निब पंजीकृत करता हूं और फिर सेल वापस कर देता हूं! धन्यवाद – bodacious

+0

आईओएस पर एनआईबी पंजीकृत करने के लिए शून्य पर निर्भर करते समय सावधान रहें 5. वॉयसओवर सक्षम होने पर एक बग है: इस मामले में यह हमेशा शून्य लौटाता है। तो आप एक अनंत लूप पंजीकरण लूप में समाप्त हो जाएगा। अधिक जानकारी: http://stackoverflow.com/a/13881778/235297 –

0

मेरा मानना ​​है कि registerNib:forCellReuseIdentifier: का बिंदु बॉयलरप्लेट कोड को कम करना है। क्या आप इसे अपने viewDidLoad विधि में बस एक बार कॉल कर सकते हैं?

+0

मैं एकाधिक नियंत्रकों में एक ही कोड को दोहराने से बचने की कोशिश कर रहा था - मैंने इसे मैक्रो के रूप में लिखा – bodacious

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

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