UITableViewCell का नीला हाइलाइट रंग कैसे बदलें?


131

मैं सोच रहा हूँ कि नीला हाइलाइट / चयन रंग कैसे बदलूं UITableViewCell, कोई विचार?

जवाबों:


213

आप हाइलाइट रंग को कई तरीकों से बदल सकते हैं।

  1. अपनी सेल की चयन संपत्ति बदलें। यदि आप इसे बदलते हैं UITableViewCellSelectionStyleGray, तो यह ग्रे होगा।

  2. selectedBackgroundViewसंपत्ति बदलें । दरअसल ब्लू ढाल बनाने वाला एक दृश्य है। आप एक दृश्य बना सकते हैं और अपनी पसंद की चीज़ों को आकर्षित कर सकते हैं, और अपने टेबल व्यू सेल्स की पृष्ठभूमि के रूप में दृश्य का उपयोग कर सकते हैं।


8
शांत, एक अच्छी व्याख्या और उदाहरण यहां मिला: cocoawithlove.com/2009/04/easy-custom-uitableview-drawing.html
थॉमस जोस

1
मुझे एहसास हुआ कि IB में आप UITableViewCell "चयन" को "कोई नहीं" पर सेट नहीं कर सकते हैं - क्योंकि selectedBackgroundViewतब सिर्फ सादा कभी दिखाई नहीं देगा। "सिलेक्शन" को डिफ़ॉल्ट पर सेट करने के बाद ही selectedBackgroundViewशो अप करें। IOS 6 और 7. पर परीक्षण किया गया
जॉनी

12
महान नोट के लिए धन्यवाद! यह अब इतना आसान बना देता है: आप एक नया दृश्य बनाते हैं (फ़्रेम को निर्दिष्ट करने की कोई आवश्यकता नहीं है: cell.selectedBackgroundView = [UIView new];और आप जो भी रंग चाहते हैं उसे सेट करें:cell.selectedBackgroundView.backgroundColor = [UIColor colorWithHex:@"ecf2f5" andAlpha:1];
Dannie P

इस पृष्ठ के निचले भाग को देखें, तो हालिया दृष्टिकोण हैं
Climbatize

145

ज़ोनल पहले से ही एक उत्कृष्ट उत्तर प्रदान कर चुका है। मैंने सोचा UIViewकि टेबलव्यू सेल में एक छोटे कोड स्निपेट को शामिल करना उपयोगी हो सकता है जो चयनित पृष्ठभूमि दृश्य के रूप में प्रस्तुत होगा।

cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];

    UIView *selectionColor = [[UIView alloc] init];
    selectionColor.backgroundColor = [UIColor colorWithRed:(245/255.0) green:(245/255.0) blue:(245/255.0) alpha:1];
    cell.selectedBackgroundView = selectionColor;
  • सेल मेरी है UITableViewCell
  • मैंने एक यूआईईवीवाई बनाया और आरजीबी रंगों (हल्के भूरे) का उपयोग करके इसकी पृष्ठभूमि का रंग सेट किया
  • मैंने तब सेल selectedBackgroundViewको सेट किया UIViewजो मैंने अपने चुने हुए पृष्ठभूमि रंग के साथ बनाया

इसने मेरे लिए अच्छा काम किया। टिप Zonble के लिए धन्यवाद।


2
अनुभागों के साथ तालिका दृश्यों का उपयोग करते समय यह बहुत अच्छी तरह से काम नहीं करता है। जब चयनित किया जाता है, तो सेल सीमाओं को खो देगा और पहली या आखिरी सेल होने पर गोल नहीं किया जाता है।
Kirk Woll

7
@kirk, आपका मतलब है समूहीकृत :)
टिएम डे

@ तीमी, नहीं, मेरा मतलब है खंड : "एक तालिका दृश्य शून्य या अधिक वर्गों से बना है, प्रत्येक अपनी स्वयं की पंक्तियों के साथ।"
Kirk Woll

आपको इसे 'cellForRowAtIndexPath' के भीतर रखना होगा। मेरे लिए ठीक है, एक सेक्शन के साथ। कई वर्गों के साथ यह कोशिश नहीं की।
विन्सेंट

खेल के लिए थोड़ा देर से, लेकिन मैं यह पुष्टि कर सकता हूं कि यह कई वर्गों (गैर-समूहित) के साथ एक
तालिका के रूप

30

UITableViewCell तीन डिफ़ॉल्ट चयन शैली हैं: -

  1. नीला
  2. धूसर
  3. कोई नहीं

कार्यान्वयन इस प्रकार है: -

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

     [cell setSelectionStyle:UITableViewCellSelectionStyleNone];       
}

7
इन तीन डिफ़ॉल्ट शैली के बजाय, हम अपनी अपेक्षित शैली के लिए चयनित बैकग्राउंड व्यू संपत्ति द्वारा भी अनुकूलित कर सकते हैं।
सुनील तारजे

मेरे लिए काम किया ... धन्यवाद एक टन।
मुजेब फारूकी

19

स्विफ्ट में, इस में उपयोग करें cellForRowAtIndexPath

let selectedView = UIView()
selectedView.backgroundColor = .white
cell.selectedBackgroundView = selectedView

यदि आप चाहते हैं कि आपका चयन रंग हर में समान हो UITableViewCell, तो इस का उपयोग करें AppDelegate

let selectedView = UIView()
selectedView.backgroundColor = .white
UITableViewCell.appearance().selectedBackgroundView = selectedView

18

यदि आप इसे ऐप वाइड में बदलना चाहते हैं, तो आप अपने ऐप डेलिगेट में तर्क जोड़ सकते हैं

class AppDelegate: UIResponder, UIApplicationDelegate {

    //... truncated

   func application(application: UIApplication!, didFinishLaunchingWithOptions launchOptions: NSDictionary!) -> Bool {

        // set up your background color view
        let colorView = UIView()
        colorView.backgroundColor = UIColor.yellowColor()

        // use UITableViewCell.appearance() to configure 
        // the default appearance of all UITableViewCells in your app
        UITableViewCell.appearance().selectedBackgroundView = colorView

        return true
    }

    //... truncated
}

उत्तम। किसी भी विचार का चयन करने पर विश्व स्तर पर उस डिफ़ॉल्ट सेल का टेक्स्ट रंग कैसे सेट किया जाए?
BananaAcid

1
यह काम करता है, लेकिन फिर नए दृश्य नियंत्रक को धकेलने पर चयन को सीधे मंजूरी दे दी जाती है।
बोबमॉफ

UITableViewCell में वैश्विक परिवर्तन करने का अच्छा तरीका
शशि 3456643

12

पूर्णता के लिए: यदि आपने अपना स्वयं का उपवर्ग बनाया है UITableViewCellतो - (void)setSelected:(BOOL)selected animated:(BOOL)animatedविधि को लागू कर सकते हैं , और सामग्री दृश्य में आपके द्वारा जोड़े गए कुछ दृश्य की पृष्ठभूमि का रंग निर्धारित कर सकते हैं। (यदि ऐसा है) या कंटेंटव्यू के ही (यदि यह आपके अपने विचारों में से एक द्वारा कवर नहीं है)।

- (void)setSelected:(BOOL)selected animated:(BOOL)animated
{
    if(selected) {
        self.contentView.backgroundColor = UIColor.blueColor;
    } else {
        self.contentView.backgroundColor = UIColor.whiteColor;
    }
}

(स्रोत कोड DIV के छोटे चौड़ाई फिट करने के लिए उपयोग नहीं किया है :)

इस दृष्टिकोण को चयनित बैकग्राउंड व्यू का उपयोग करने के दो फायदे हैं, यह कम मेमोरी और थोड़ा कम सीपीयू का उपयोग करता है, न कि यू तब तक नोटिस करेगा जब तक कि यू सैकड़ों सेल प्रदर्शित न करें।


यह एक नया दृश्य असाइन करने के selectedBackgroundView बाद ही विधि जोड़ने की शुरुआत में काम करता हैself. selectedBackgroundView = [UIView new];
enadun

@enadun यह विधि मेरे लिए iOS 12 पर काम करती है, जिसमें selectedBackgroundViewसंपत्ति की कोई सेटिंग नहीं है ।
नैट

11

मुझे UITableViewCellSelectionStyleDefaultकाम करने के लिए कस्टम पृष्ठभूमि रंग के लिए चयन शैली निर्धारित करनी है । यदि कोई अन्य शैली है, तो कस्टम पृष्ठभूमि रंग को अनदेखा किया जाएगा। आईओएस 8 पर परीक्षण किया गया।

सेल के लिए पूर्ण कोड निम्नानुसार है:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *CellIdentifier = @"MyCell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }

    // This is how you change the background color
    cell.selectionStyle = UITableViewCellSelectionStyleDefault;
    UIView *bgColorView = [[UIView alloc] init];
    bgColorView.backgroundColor = [UIColor redColor];
    [cell setSelectedBackgroundView:bgColorView];

    return cell;
}

6

@ उपयोगकर्ता के उत्तर के आधार पर , आप अपने ऐप कोड में कहीं भी इस एक्सटेंशन को जोड़ सकते हैं और अपने चयन रंग को सीधे अपने ऐप की प्रत्येक कोशिकाओं के लिए स्टोरीबोर्ड एडिटर में रख सकते हैं:

@IBDesignable extension UITableViewCell {
    @IBInspectable var selectedColor: UIColor? {
        set {
            if let color = newValue {
                selectedBackgroundView = UIView()
                selectedBackgroundView!.backgroundColor = color
            } else {
                selectedBackgroundView = nil
            }
        }
        get {
            return selectedBackgroundView?.backgroundColor
        }
    }
}

स्टोरीबोर्ड में UITableViewCell चयन रंग


5
@IBDesignable class UIDesignableTableViewCell: UITableViewCell {
  @IBInspectable var selectedColor: UIColor = UIColor.clearColor() {
    didSet {
      selectedBackgroundView = UIView()
      selectedBackgroundView?.backgroundColor = selectedColor
    }
  }
}

अपने स्टोरीबोर्ड में, अपने UITableViewCell के वर्ग को UIDesignableTableViewCell पर सेट करें, गुण निरीक्षक पर, आप अपने सेल के चयनित रंग को किसी भी रंग में बदल सकते हैं।

आप इसका उपयोग अपनी सभी कोशिकाओं के लिए कर सकते हैं। यह आपके गुण निरीक्षक की तरह दिखेगा।

यह आपके गुण निरीक्षक की तरह दिखेगा


बहुत रचनात्मक! महान!
कौशिल रूपारिया

); आप तो यह और भी अधिक सरल है, मेरा उत्तर पर नज़र कर सकते हैं stackoverflow.com/a/51764804/537694
Climbatize

मैं लेबल सेट करने के लिए एक कस्टम सेल का उपयोग करता हूं, इसलिए यह अच्छी तरह से काम करता है, धन्यवाद! स्विफ्ट 5 के लिए बदलाव: यह अब है UIColor.clear, नहीं UIColor.clearColor()। यकीन नहीं होता है कि अगर स्विफ्ट में भी बदलाव होता है, लेकिन यह भी बिना काम करता है @IBDesignable
नेफ

5

स्विफ्ट 3.0 / 4.0

यदि आपने अपना स्वयं का कस्टम सेल बनाया है, तो आप सभी सेल के लिए चयन रंग बदल सकते हैं awakeFromNib():

 override func awakeFromNib() {
    super.awakeFromNib()

    let colorView = UIView()
    colorView.backgroundColor = UIColor.orange.withAlphaComponent(0.4)

    self.selectedBackgroundView = colorView


}

0

1- अपने सेल के कंटेंट व्यू में एक व्यू जोड़ें।
2- अपने सेल पर राइट क्लिक करें।
3- "व्यूबेकग्राउंड व्यू" के रूप में जोड़ा गया दृश्य बनाएं यहाँ छवि विवरण दर्ज करें

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.