2012-08-23 6 views
10

निम्नलिखित कोड में, यदि हम [cell addSubview: someLabel] बनाम [cell.contentView addSubview: someLabel] बनाते हैं, तो वे वही काम करते हैं। क्या एक या दूसरे में कोई अंतर है? (UIView (वास्तविक कोड में कस्टम सेल UIImageView और UILabel जोड़ रहा है), दूसरे हाथ पर, contentView नहीं है, तो हम अपने contentView को subview जोड़ने की जरूरत नहीं है। UITableViewCell माध्यम से UIView का एक उपवर्ग है)आईओएस पर, UITableViewCell ऑब्जेक्ट "सेल" बनाम "cell.contentView" में सबव्यू जोड़ने के बीच क्या अंतर है?

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

    UITableViewCell *cell = nil; 

    if ([tableView isEqual:self.songsTableView]){ 

     static NSString *TableViewCellIdentifier = @"MyCells"; 

     cell = [tableView dequeueReusableCellWithIdentifier:TableViewCellIdentifier]; 

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

     // ... some code to create a UILabel (not shown here) 

     [cell addSubview: someLabel]; // vs using [cell.contentView addSubView: ...] 

उत्तर

10

मुझे विश्वास है कि अगर मैं गलत नहीं हूं, तो सामग्री दृश्य UITableViewCell का एक सबव्यूव है।

तो आप इस पेज here को देखें, तो आप एक UITableViewCell

मैं डिफ़ॉल्ट रूप से लगता है कि वास्तव में देखते हैं 3 subviews, संपादन नियंत्रण छिपा हुआ है जब तक आप एक मेज के लिए संपादन मोड में प्रवेश देख सकते हैं जो मामले में, संपादन नियंत्रण प्रकट होता है (प्रत्येक पंक्ति का शून्य बटन शेष) और आपकी सामग्री दृश्य का आकार बदल जाता है और दाईं ओर धक्का दिया जाता है। यह शायद अन्य उत्तर द्वारा वर्णित "उचित एनीमेशन" प्रभाव देता है।

अंतर का परीक्षण करने के लिए, सेल के साथ UILabel जैसे सबव्यू को जोड़ने के बजाय सेल.contentView के बजाय सेल में जोड़ने का प्रयास करें। जब आप इसे सेल.contentView के बजाय सेल में जोड़ते हैं और आप अपनी तालिका के लिए संपादन मोड दर्ज करते हैं, तो मेरा मानना ​​है कि आपका UILabel आकार बदल नहीं जाएगा, आप कम से कम साइन बटन के नीचे/नीचे संपादन बटन देखेंगे।

+0

हाँ मुझे लगता है कि सेल के अन्य क्षेत्रों में हस्तक्षेप नहीं करना है ... लेकिन दिलचस्प बात यह है कि, अगर मैं 'contentView' का उपयोग करता हूं, तो हटाएं आइकन' हटाएं 'बटन ला सकता है, और यह सामग्री को कवर करता है क्षेत्र –

+0

और यह एक्सेसरी के नीचे भी दिखाता है, भले ही सामग्री दृश्य का उपयोग किया जाता है, लेकिन शायद यह सामग्री के कारण सामग्री क्षेत्र से परे कुछ दिखा रहा है, और यह पुष्टि की जाती है कि क्या मैं सामग्री पर 'x = 0' पर एक छवि दिखाता हूं क्षेत्र, और उसके बाद इसे 'x = -16' में बदलें, और यह संपादन क्षेत्र में हटाए गए आइकन के नीचे भी जाएगा। –

2

contentView में अपने विचार रखने से संपादन मोड में और बाहर उचित एनीमेशन प्रभावित होता है। जब आप उप-वर्गीकरण नहीं कर रहे हैं तो अपने सभी सबव्यूज़ contentView में रखें, जो तब तक अधिकतर समय तक नहीं होना चाहिए जब तक आप यह नहीं जानते कि आप क्या कर रहे हैं।

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