2011-01-29 12 views
41

tableView:cellForRowAtIndexPath: में मैं निम्नलिखित है:UITableView में, cell.detailTextLabel.text काम नहीं कर रहा है ... क्यों?

cell.textLabel.text = @"label"; 
cell.detailTextLabel.text = @"detail"; 

textLabel शो के रूप में उम्मीद है, लेकिन detailTextLabel, सब पर प्रकट नहीं होता है, हालांकि कोई निदान। मुझे उम्मीद थी कि सेल में "सामान्य" टेक्स्ट, "सामान्य" टेक्स्ट के नीचे, संभवत: एक छोटे फ़ॉन्ट आकार के साथ "विस्तार" टेक्स्ट दिखाई देगा।

एक ही प्रश्न यहां एक और पोस्टिंग में पूछा गया है और उपयोगकर्ता "जेब्रेनन" ने जवाब दिया कि टेबलव्यू सेल शैली UITableViewCellStylePlain के अलावा कुछ और होना चाहिए। हालांकि, ऐसा लगता है कि केवल दो संभावित शैलियों हैं, UITableViewCellStylePlain और UITableViewCellStyleGrouped। मुझे या तो एक ही परिणाम मिलता है (विस्तार लेबल प्रकट नहीं होता है)।

क्या कोई और सेल शैली है जिसे मैं दस्तावेज़ में नहीं देख रहा हूं? पिछले अपडेट में UITableView परिवर्तन और detailTextLabel अब उपलब्ध नहीं है? क्या मुझे इसे दिखाने के लिए कुछ अतिरिक्त करना है? कोई सुझाव?

मैं xcode 3.2.5 का उपयोग कर रहा हूं और आईफोन 4.2 सिम्युलेटर के लिए निर्माण कर रहा हूं।

उत्तर

111

आपका प्रारंभ इस को बदलने की आवश्यकता है:

cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle
reuseIdentifier:CellIdentifier] autorelease];

मैं पर बल दिया और भाग आप को बदलने की जरूरत बोल्ड कर दिया है।

+0

दाएं! धन्यवाद। मैंने शैली को उपशीर्षक में बदलने की कोशिश की थी, लेकिन मैंने UITableViewCellStyle के बजाय UITableViewStyle को बदल दिया और यह संकलित नहीं हुआ, इसलिए मैंने सोचा कि उपशीर्षक शैली अब उपलब्ध नहीं थी। – RobertL

+1

हाहा! कोडिंग करते समय हम सभी मूर्खतापूर्ण गलतियां करते हैं। मुझे लगता है कि अगर ऐप्पल ने उपशीर्षक शैली को अक्षम कर दिया है, तो दंगे होंगे। –

+3

ऐसा लगता है कि यह स्मृति को संरक्षित रखने के लिए स्टैक से हटाने के बजाए हर बार एक नया UITableViewCell शुरू करेगा। ऐसा लगता है कि स्टाइल की कोशिकाओं का पुन: उपयोग करने का एकमात्र तरीका UITableViewCellStyleSubtitle उपclass होगा, प्रारंभकर्ता को ओवरराइड करेगा, और सामान्य '[tableView dequeueReusableCellWithIdentifier: @ "ReuseIdentifier"] को कॉल करें;' क्या कोई इसे पुष्टि या अस्वीकार कर सकता है? 'InitWithStyle: reuseIdentifier:' https://developer.apple.com/library/ios/documentation/Uikit/reference/UITableViewCell_Class/index.html#//apple_ref/occ/instm/UITableViewCell/initWithStyle:reuseIdentifier: –

14

जब आप इसे आवंटित करते हैं तो आपको सेल प्रकार को उपशीर्षक में सेट करने की आवश्यकता होती है।

if (!cell) { 
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:BasicCellIdentifier]; 
} 
+0

पर चर्चा देखें सही! धन्यवाद। पूर्व उत्तर पर मेरी टिप्पणी देखें। – RobertL

12

एक्सकोड 4.2 का उपयोग करते समय, तालिका दृश्य सेल शैली को स्टोरीबोर्ड में उपशीर्षक में सेट करें। dequeueReusableCellWithIdentifier एक तत्काल सेल लौटाएगा।

3
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle 
          reuseIdentifier:CellIdentifier]; 
4

तालिका देखें सेल शैली सेट स्टोरीबोर्ड

में उपशीर्षक और आप सेल

if (cell == nil) { 
      cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:BasicCellIdentifier] autorelease]; 
} 

enter image description here

0

स्विफ्ट 3 कॉन्फ़िगर करने के लिए इस कोड को लिखने के लिए:

यदि आप एम हैं

let tableContent = ["1", "2", "3", "4", "5"] 
let tableDetailContent = ["a", "b", "c", "d", ""] 

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    let cell = UITableViewCell(style: UITableViewCellStyle.subtitle, reuseIdentifier: "yourCellIdentifier") 
    cell.textLabel?.text = tableContent[indexPath.row] 
    cell.detailTextLabel?.text = tableDetailContent[indexPath.row] 

    return cell 
} 

enter image description here

ऊपर से इस कोड को हिस्सा आप अपने detailTextLabel स्थापित करने के लिए .. आप जो कुछ भी आप तालिका देखें सेल शैली के लिए स्टोरीबोर्ड पर चाहते हैं निर्धारित कर सकते हैं अनुमति देता है: "cellForRowAt indexPath" समारोह अधिभावी साथ अपने सेल aking (कस्टम, बेसिक, राइट विवरण, बाएं विस्तार, उपशीर्षक), यह लाइन इसे ओवरराइड कर देगी:

style: UITableViewCellStyle.subtitle 
संबंधित मुद्दे