ইউআইটিএবলভিউ সেল নির্বাচিত রঙ?


319

আমি একটি প্রথা তৈরি করেছি UITableViewCell। টেবিল ভিউতে তথ্য ঠিক আছে। আমি আটকে যাচ্ছি যখন ব্যবহারকারী টেবিলভিউর সেলটি স্পর্শ করে, তখন আমি ঘরের নির্বাচনকে হাইলাইট করার জন্য ডিফল্ট [নীল বর্ণ] মান ব্যতীত ঘরের পটভূমির রঙটি দেখাতে চাই। আমি এই কোডটি ব্যবহার করি তবে কিছুই হয় না:

cell.selectedBackgroundView.backgroundColor=[UIColor blackColor];

উত্তর:


365

আমি মনে করি আপনি সঠিক পথে ছিলেন তবে ক্লাস সংজ্ঞা অনুসারে selectedBackgroundView:

ডিফল্টটি প্লেইন-স্টাইলের টেবিলগুলিতে (UITableViewStylePlain) সেল এবং বিভাগ-গ্রুপ সারণী UITableViewStyleGrouped জন্য নন-নীল।

অতএব, আপনি যদি সরল-শৈলীর টেবিলটি ব্যবহার করেন, তবে আপনাকে UIViewআপনার পছন্দসই পটভূমির রঙের একটি নতুন বরাদ্দ করাতে হবে এবং তারপরে এটি নির্ধারণ করুন selectedBackgroundView

বিকল্পভাবে, আপনি ব্যবহার করতে পারেন:

cell.selectionStyle = UITableViewCellSelectionStyleGray;

সেলটি নির্বাচন করার সময় যদি আপনি যা চেয়েছিলেন তা সমস্ত ধূসর ব্যাকগ্রাউন্ড ছিল। আশাকরি এটা সাহায্য করবে.


1
আপনি যদি স্টোরবোর্ডে ভিউ সম্পর্কিত বিষয়বস্তু রেখে যেতে চান তবে এই সম্পত্তিটিও স্টোরবোর্ডে সেট করা যেতে পারে।
IIllIll

1
সুইফট 3 সংস্করণ: cell.selectionStyle = .gray // এছাড়াও আপনি .none ব্যবহার করতে পারেন, ব্লু বা .default
সেবাস্টিয়ান Remy

6
এই উত্তরটি বেশ পুরানো ... নতুন আইওএস সংস্করণে কি কিছু পরিবর্তন হয়েছে? আমার একটি সাদামাটা স্টাইলের টেবিল রয়েছে এবং আমার নির্বাচিত ব্যাকগ্রাউন্ডভিউটি শুভ নয়। আকর্ষণীয়ভাবে এই দৃশ্যের ব্যাকগ্রাউন্ড কালার পরিবর্তন করার কোনও প্রভাব নেই, পরিবর্তে আমাকে এটিকে কাজ করতে আমার নতুন পছন্দসই ব্যাকগ্রাউন্ড কালারের সাথে একটি নতুন ইউআইভিউ দ্বারা প্রতিস্থাপন করতে হবে।
ndreisg

আপনি আমাকে পুরোপুরি উন্মাদ হওয়ার হাত থেকে বাঁচিয়েছেন। অনেক ধন্যবাদ!
mrwheet

656

কাস্টম সেলগুলির দরকার নেই। আপনি যদি কেবল ঘরের নির্বাচিত রঙ পরিবর্তন করতে চান তবে আপনি এটি করতে পারেন:

উদ্দেশ্য গ:

UIView *bgColorView = [[UIView alloc] init];
bgColorView.backgroundColor = [UIColor redColor];
[cell setSelectedBackgroundView:bgColorView];

সুইফট:

let bgColorView = UIView()
bgColorView.backgroundColor = UIColor.red
cell.selectedBackgroundView = bgColorView

47
এটি কাজ করে তবে একটি গোষ্ঠীযুক্ত ইউআইটিবেবল ভিউতে গোলাকার কোণগুলি হারিয়ে গেছে।
ডেভিড

1
@ ডেভিড কি কোণার রেডিয়াস = 7 গোষ্ঠীযুক্ত টেবিল দর্শনে কোথাও কাজ করে? যদি কোষটি মাঝখানে থাকে? এটি পরীক্ষা করার সময় নেই।
ম্যাকিয়েজ সোচ

2
দ্রুততার জন্য সামান্য ভুল। সঠিক লাইনটি সেল.লিজডব্যাকগ্রাউন্ডভিউ = বিজি কালারভিউ
জন কাকন

13
সচেতন হন যে এটি কাজ করার জন্য, স্টোরিবোর্ডে (বা এক্সআইবি ফাইল) আপনাকে অবশ্যই কোনওটি ছাড়াই একটি নির্বাচিত পটভূমি রঙ নির্বাচন করতে হবে। এটি এমন কয়েকটি উত্তরের বিপরীতে যা বলে যে এটি কাজ করার জন্য আপনাকে প্রথমে এটি কোনওটিতে সেট করা দরকার। কারও সাথেই এটি কাজ করবে না। আমি এটি আবিষ্কার না করা পর্যন্ত আমাকে পাগল করে দিচ্ছিল। ধন্যবাদ।
কাকুবেই

1
আপনি যখন স্টোরিবোর্ড ব্যবহার করছেন তখন আপনি কীভাবে এই কাজটি করবেন?
জন

42

টেবিল ভিউ সেল নির্বাচনের পটভূমির রঙ ইন্টারফেস বিল্ডারের স্টোরিবোর্ডের মাধ্যমে সেট করা যেতে পারে:

টেবিল ভিউ সেল নির্বাচনের রঙ কোনও নয়


1
আমি মনে করি আমরা স্টোরিবোর্ড থেকে কাস্টম রঙ সেট করতে পারি না। এটি প্রোগ্রামক্রমে সেট করা প্রয়োজন।
পল্লবী

37

আপনার যদি প্রতি বিভাগে মাত্র একটি কক্ষ সহ গোষ্ঠীযুক্ত টেবিল থাকে তবে কেবল এই অতিরিক্ত লাইনটি কোডটিতে যুক্ত করুন: bgColorView.layer.cornerRadius = 10;

UIView *bgColorView = [[UIView alloc] init];
[bgColorView setBackgroundColor:[UIColor redColor]];
bgColorView.layer.cornerRadius = 10;
[cell setSelectedBackgroundView:bgColorView];
[bgColorView release]; 

কোয়ার্টজোর আমদানি করতে ভুলবেন না।


28

সুইফট 3: আপনি যখন cellForRowAtIndexPath:পদ্ধতিতে রেখেছিলেন তখন আমার পক্ষে এটি কাজ করে

let view = UIView()
view.backgroundColor = UIColor.red
cell.selectedBackgroundView = view

6
আমি মনে করি এটির আরও ভাল জায়গাটি হ'ল awakeFromNib()পদ্ধতি (কাস্টম সেলের ক্ষেত্রে)।
লেবার্গসুন

22

নীচেরগুলি আইওএস 8 এ আমার জন্য কাজ করে।

UITableViewCellSelectionStyleDefaultকাস্টম ব্যাকগ্রাউন্ড রঙের কাজ করার জন্য আমাকে নির্বাচনের স্টাইলটি সেট করতে হবে । অন্য কোনও শৈলীতে, কাস্টম ব্যাকগ্রাউন্ড রঙ উপেক্ষা করা হবে। আচরণের পরিবর্তন হতে পারে বলে মনে হচ্ছে আগের উত্তরগুলির পরিবর্তে কারও কাছে স্টাইল সেট করা দরকার।

নীচে সেলটির সম্পূর্ণ কোড:

- (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;
}

এই কোডটি মেমরি ফাঁস করছে। যে কোনও "বরাদ্দ" বা অবজেক্ট তৈরি হওয়া অবশ্যই (সেল == নীল) {} অবরুদ্ধ হওয়া উচিত। বা আইওএসের মাধ্যমে সেলটি প্রকাশিত হওয়ার সাথে সাথে ভিউ তৈরি করা হবে।
জিনকোড

18

আপনার টেবিল সেলের জন্য এবং কাস্টম সেল শ্রেণিতে একটি কাস্টম সেল তৈরি করুন m আপনার পছন্দসই রঙের চিত্রটি selectionBackgroundইউআইআইমেজে স্থাপন করা উচিত।

- (void)setSelected:(BOOL)selected animated:(BOOL)animated
{
    UIImage *selectionBackground = [UIImage imageNamed:@"yellow_bar.png"];
    UIImageView *iview=[[UIImageView alloc] initWithImage:selectionBackground];
    self.selectedBackgroundView=iview;
}

2
আমি মনে করি যে কোনও সেল নির্বাচিত হলে কেবল বিজি ভিউ তৈরি করে সেলটি আরম্ভ করার সময় নির্বাচিতব্যাকগ্রাউন্ডভিউ সেট করার চেয়ে এটি আরও মেমরির দক্ষ হতে পারে।
ডটস্ল্যাশলু

11

সুইফট 3.0 এক্সটেনশন

extension UITableViewCell {
    var selectionColor: UIColor {
        set {
            let view = UIView()
            view.backgroundColor = newValue
            self.selectedBackgroundView = view
        }
        get {
            return self.selectedBackgroundView?.backgroundColor ?? UIColor.clear
        }
    }
}

cell.selectionColor = UIColor.FormaCar.blue


1
IBDesignable এবং IBInspectable যোগ
মাইকেল Ziobro

1
@IBInspectableআপনি যদি চান তবে @ মাইখাজিওব্রো কেবলমাত্র ভেরিতে যুক্ত করুন । @IBDesignableএই জন্য দরকারী নয়।
নিক কোভ

9
-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
    UIView *view = [[UIView alloc] init];
    [view setBackgroundColor:[UIColor redColor]];
    [cell setSelectedBackgroundView:view];
}

আমাদের এই পদ্ধতিতে নির্বাচিত ব্যাকগ্রাউন্ড ভিউ সেট করতে হবে।


8

আপনি যদি আপনার ঘরের একটি কাস্টম হাইলাইটেড রঙ যুক্ত করতে চান (এবং আপনার সেলটিতে বোতাম, লেবেল, চিত্র ইত্যাদি রয়েছে)) আমি পরবর্তী পদক্ষেপগুলি অনুসরণ করেছি:

উদাহরণস্বরূপ যদি আপনি একটি নির্বাচিত হলুদ রঙ চান:

1) এমন একটি ভিউ তৈরি করুন যা 20% অস্বচ্ছ (হলুদ বর্ণের সাথে) সহ সমস্ত কক্ষের সাথে ফিট করে, উদাহরণস্বরূপ ব্যাকগ্রাউন্ডসलेक्ट করা ভিউ

2) সেল কন্ট্রোলারে এটি লিখুন:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
     self.backgroundselectedView.alpha=1;
    [super touchesBegan:touches withEvent:event];
}

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
    self.backgroundselectedView.alpha=0;
    [super touchesEnded:touches withEvent:event];
}

- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event
{
    self.backgroundSelectedImage.alpha=0;
    [super touchesCancelled:touches withEvent:event];
}

8

সুইফ্ট 4-এ, আপনি বিশ্বজুড়ে আপনার টেবিল ঘরের পটভূমি রঙ সেট করতে পারেন ( এখান থেকে নেওয়া ):

let backgroundColorView = UIView()
backgroundColorView.backgroundColor = UIColor.red
UITableViewCell.appearance().selectedBackgroundView = backgroundColorView

6

আপনি যদি একটি কাস্টম টেবিলভিউসেল ব্যবহার করেন তবে আপনি ওভাররাইডও করতে পারেন awakeFromNib:

override func awakeFromNib() {
    super.awakeFromNib()

    // Set background color
    let view = UIView()
    view.backgroundColor = UIColor.redColor()
    selectedBackgroundView = view
}

1
চমৎকার সমাধান! ধন্যবাদ
থোমস কলমন

আমি 10 টির বেশি সেল ছাড়াই একটি সাধারণ টেবিলভিউ করছি, এটি এখন পর্যন্ত দুর্দান্ত কাজ করে।
কোড

5

গোষ্ঠীভুক্ত টেবিলের জন্য বৃত্তাকার কোণার পটভূমি দেখানোর জন্য খ্রিস্টানদের আরও একটি পরামর্শ।

আমি যদি cornerRadius = 10ঘরের জন্য ব্যবহার করি তবে এটি চার কোণার বৃত্তাকার নির্বাচনের পটভূমি দেখায়। টেবিল ভিউয়ের ডিফল্ট ইউআইয়ের সাথে এটি একই নয়।

সুতরাং, আমি কোণার রেডিও দিয়ে এটি সমাধানের সহজ উপায় সম্পর্কে ভাবি । আপনি নীচের কোডগুলি থেকে দেখতে পাচ্ছেন, ঘরের অবস্থান (উপরে, নীচে, মধ্যম বা শীর্ষ নীচে) সম্পর্কে চেক করুন এবং উপরের কোণে বা নীচের কোণটি গোপন করতে আরও একটি উপ স্তর যুক্ত করুন। এটি ঠিক ডিফল্ট সারণী দর্শন নির্বাচনের পটভূমির সাথে একই চেহারা দেখায়।

আমি এই কোডটি আইপ্যাড দিয়ে পরীক্ষা করেছি splitterview। আপনার প্রয়োজন অনুসারে আপনি প্যাচলায়ারের ফ্রেমের অবস্থান পরিবর্তন করতে পারেন।

একই ফলাফল অর্জনের আরও সহজ উপায় আছে কিনা তা দয়া করে আমাকে জানান let

if (tableView.style == UITableViewStyleGrouped) 
{
    if (indexPath.row == 0) 
    {
        cellPosition = CellGroupPositionAtTop;
    }    
    else 
    {
        cellPosition = CellGroupPositionAtMiddle;
    }

    NSInteger numberOfRows = [tableView numberOfRowsInSection:indexPath.section];
    if (indexPath.row == numberOfRows - 1) 
    {
        if (cellPosition == CellGroupPositionAtTop) 
        {
            cellPosition = CellGroupPositionAtTopAndBottom;
        } 
        else 
        {
            cellPosition = CellGroupPositionAtBottom;
        }
    }

    if (cellPosition != CellGroupPositionAtMiddle) 
    {
        bgColorView.layer.cornerRadius = 10;
        CALayer *patchLayer;
        if (cellPosition == CellGroupPositionAtTop) 
        {
            patchLayer = [CALayer layer];
            patchLayer.frame = CGRectMake(0, 10, 302, 35);
            patchLayer.backgroundColor = YOUR_BACKGROUND_COLOR;
            [bgColorView.layer addSublayer:patchLayer];
        } 
        else if (cellPosition == CellGroupPositionAtBottom) 
        {
            patchLayer = [CALayer layer];
            patchLayer.frame = CGRectMake(0, 0, 302, 35);
            patchLayer.backgroundColor = YOUR_BACKGROUND_COLOR;
            [bgColorView.layer addSublayer:patchLayer];
        }
    }
}

4

আমি লক্ষ করতে চাই যে XIB সম্পাদক আপনাকে নিম্নলিখিত মানক বিকল্পগুলি সরবরাহ করে:

বিভাগ: নীল / ধূসর / কিছুই নয়

(বিকল্পগুলির ডান-হাতের কলাম, চতুর্থ ট্যাব, প্রথম গোষ্ঠী "টেবিল ভিউ সেল", চতুর্থ উপগোষ্ঠী, 3 টি আইটেমের 1 ম "নির্বাচন" পড়ে)

সম্ভবত আপনি যা করতে চান তা সঠিক মান বিকল্পটি নির্বাচন করে অর্জন করা যেতে পারে।


তুমি ঠিক বলছো. এর কারণে, আপনি যদি এটি করেন তবে আপনি সহজেই "সেলফোরআউটিআইডেক্সপ্যাথ" এ নির্বাচনের রঙ পরিবর্তন করতে পারেন: ইউআইটিএবল ভিউসেল * সেল = [টেবিলভিউ ডেকিউর রিজেজেবলসেলভিথআইডেন্টিফায়ার: @ "সেল"]; সেল.সিলিগ্রেডব্যাকগ্রাউন্ডভিউ = [[ইউআইভিউ বরাদ্দ] initWithFrame: সিজিআরেক্টজেরো]; সেল.সিলিগ্রেডব্যাকগ্রাউন্ডভিউ.ব্যাকগ্রাউন্ড কালার = [ইউআইকলার রঙ উইথ্রিড: (255/255) সবুজ: (0/255) নীল: (0/255) আলফা: 0.1];
ব্যবহারকারী 8675

ধন্যবাদ! যাওয়ার উপায়
ফ্যাটি

3

কোনও নির্বাচিত ঘরের জন্য কাস্টম রঙ অনুযায়ী UITableView, ম্যাকিয়েজ সুইচের উত্তর অনুসারে দুর্দান্ত সমাধান

কেবল এটি যুক্ত করার জন্য, আপনি সেল কনফিগারেশনে সাধারণত এর অধীনে স্যুইচের উত্তর ঘোষণা করেন:

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

এবং অতিরিক্ত প্রভাবের জন্য, সিস্টেমের রঙগুলির পরিবর্তে, আপনি কাস্টম রঙ বর্ণের জন্য আরজিবি মান ব্যবহার করতে পারেন। আমার কোডে আমি এটি এটি অর্জন করেছি:

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

} 

 static NSString *CellIdentifier = @"YourCustomCellName";
 MakanTableCell *cell = [self.tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

// Configure the cell...

if (cell == nil) {

cell = [[[NSBundle mainBundle]loadNibNamed:@"YourCustomCellClassName" owner:self options:nil]objectAtIndex:0];
                    } 

UIView *bgColorView = [[UIView alloc] init];
bgColorView.backgroundColor = [UIColor colorWithRed:255.0/256.0 green:239.0/256.0 blue:49.0/256.0 alpha:1];
bgColorView.layer.cornerRadius = 7;
bgColorView.layer.masksToBounds = YES;
[cell setSelectedBackgroundView:bgColorView];


return cell;

}

যদি তা আপনার জন্যও কার্যকর হয় তবে আমাকে জানান। আপনি cornerRadiusনির্বাচিত ঘরের কোণে প্রভাবগুলির জন্য নম্বরটি নিয়ে গোলমাল করতে পারেন ।


3

আমি সবার চেয়ে কিছুটা আলাদা পন্থা পেয়েছি যা নির্বাচিত হওয়ার পরিবর্তে স্পর্শে নির্বাচনকে প্রতিফলিত করে। আমার একটি সাবক্ল্যাসড ইউআইটিএবলভিউসেল রয়েছে। আপনাকে যা করতে হবে তা হ'ল স্পর্শ ইভেন্টগুলিতে ব্যাকগ্রাউন্ডের রঙ সেট করে যা স্পর্শে নির্বাচনকে সিমুলেট করে এবং তারপরে সেটস্লাইক্টড ফাংশনে ব্যাকগ্রাউন্ড রঙ সেট করে। সেলসলেক্টড ফাংশনে ব্যাকগ্রাউন্ড রঙ সেট করা ঘরটি অনির্বাচিত করার অনুমতি দেয়। স্পর্শ ইভেন্টটি সুপারের কাছে পৌঁছে দেওয়ার বিষয়টি নিশ্চিত করুন, অন্যথায় কক্ষটি বাস্তবে এর নির্বাচিত হিসাবে কাজ করবে না।

override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
    self.backgroundColor = UIColor(white: 0.0, alpha: 0.1)
    super.touchesBegan(touches, withEvent: event)
}

override func touchesCancelled(touches: NSSet!, withEvent event: UIEvent!) {
    self.backgroundColor = UIColor.clearColor()
    super.touchesCancelled(touches, withEvent: event)
}

override func setSelected(selected: Bool, animated: Bool) {
    super.setSelected(selected, animated: animated)

    // Configure the view for the selected state
    self.backgroundColor = selected ? UIColor(white: 0.0, alpha: 0.1) : UIColor.clearColor()
}

3

সমস্ত কক্ষের জন্য পটভূমি যুক্ত করতে (ম্যাকিয়েজের উত্তরটি ব্যবহার করে):

for (int section = 0; section < [self.tableView numberOfSections]; section++) {
        for (int row = 0; row < [self.tableView numberOfRowsInSection:section]; row++) {
            NSIndexPath* cellPath = [NSIndexPath indexPathForRow:row inSection:section];
            UITableViewCell* cell = [self.tableView cellForRowAtIndexPath:cellPath];

            //stuff to do with each cell
            UIView *bgColorView = [[UIView alloc] init];
            bgColorView.backgroundColor = [UIColor redColor];
            [cell setSelectedBackgroundView:bgColorView];
        }
    } 

2

ওভাররাইড করতে UITableViewCell'গুলি setSelectedএছাড়াও কাজ করে।

override func setSelected(selected: Bool, animated: Bool) {
    super.setSelected(selected, animated: animated)

    // Set background color
    let view = UIView()
    view.backgroundColor = UIColor.redColor()
    selectedBackgroundView = view
}

2

যাঁরা কেবলমাত্র ডিফল্ট নির্বাচিত ধূসর ব্যাকগ্রাউন্ড থেকে মুক্তি পেতে চান তাদের কোডটি এই লাইনটি আপনার সেলফোরআউএটআইএনডেক্সপথ ফ্যাঙ্কে রেখে দিন:

yourCell.selectionStyle = .None

1
অনেক ধন্যবাদ, আমার জন্য এটি সঠিক উত্তর অন্যদের নয়।
DeyaEldeen

নীল বা ধূসর কোনও বাছাই না করে কীভাবে "সবুজ" এর মতো কোনও রঙ সেট করবেন।
সত্যম

2

সুইফট ৩.০ এর জন্য:

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    let cell = super.tableView(tableView, cellForRowAt: indexPath)

    cell.contentView.backgroundColor = UIColor.red
}

খুব ভাল, তবে ব্যবহারকারীরা কিছু নির্বাচন করার পরেই কাজ করবে (ডিফল্ট নির্বাচনের রঙ শুরুতেই থাকবে)
কনস্ট্যান্টিন সালাভাতভ

2

আমি নীচের পদ্ধতির ব্যবহার করি এবং আমার জন্য ভাল কাজ করে,

class MyTableViewCell : UITableViewCell {

                var defaultStateColor:UIColor?
                var hitStateColor:UIColor?

                 override func awakeFromNib(){
                     super.awakeFromNib()
                     self.selectionStyle = .None
                 }

// if you are overriding init you should set selectionStyle = .None

                override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
                    if let hitColor = hitStateColor {
                        self.contentView.backgroundColor = hitColor
                    }
                }

                override func touchesEnded(touches: Set<UITouch>, withEvent event: UIEvent?) {
                    if let defaultColor = defaultStateColor {
                        self.contentView.backgroundColor = defaultColor
                    }
                }

                override func touchesCancelled(touches: Set<UITouch>?, withEvent event: UIEvent?) {
                    if let defaultColor = defaultStateColor {
                        self.contentView.backgroundColor = defaultColor
                    }
                }
            }

2

সুইফট 4+:

আপনার টেবিল কক্ষে নিম্নলিখিত লাইনগুলি যুক্ত করুন

let bgColorView = UIView()
bgColorView.backgroundColor =  .red
self.selectedBackgroundView = bgColorView

শেষ পর্যন্ত এটি নীচের মতো হওয়া উচিত

override func setSelected(_ selected: Bool, animated: Bool)
    {
        super.setSelected(selected, animated: animated)

        // Configure the view for the selected state
        let bgColorView = UIView()
        bgColorView.backgroundColor =  .red
        self.selectedBackgroundView = bgColorView

    }

1

দলবদ্ধ টেবিলের জন্য প্রয়োজনীয় কোডের গুরুত্বপূর্ণ অংশগুলি এখানে। যখন কোনও বিভাগের ঘরগুলির মধ্যে যে কোনও একটি নির্বাচন করা হলে প্রথম সারিতে রঙ পরিবর্তন হয়। প্রথমে কারওটিতে সেলসেকশন স্টাইলটি সেট না করেই যখন ব্যবহারকারী সারি 0 ক্লিক করে যেখানে সেলটি বিজি কলরভিউতে পরিবর্তিত হয় তখন বিজি কলরভিউকে বিবর্ণ এবং পুনরায় লোড করে আবার কোনও বিরক্তিকর ডাবল রিলোড হয় না। শুভকামনা এবং এটি করার কোনও সহজ উপায় আছে কিনা তা আমাকে জানান।

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

    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }

    if ([indexPath row] == 0) 
    {
        cell.selectionStyle = UITableViewCellSelectionStyleNone;

        UIView *bgColorView = [[UIView alloc] init];
        bgColorView.layer.cornerRadius = 7;
        bgColorView.layer.masksToBounds = YES;
        [bgColorView setBackgroundColor:[UIColor colorWithRed:.85 green:0 blue:0 alpha:1]];
        [cell setSelectedBackgroundView:bgColorView];

        UIColor *backColor = [UIColor colorWithRed:0 green:0 blue:1 alpha:1];
        cell.backgroundColor = backColor;
        UIColor *foreColor = [UIColor colorWithWhite:1 alpha:1];
        cell.textLabel.textColor = foreColor;

        cell.textLabel.text = @"row0";
    }
    else if ([indexPath row] == 1) 
    {
        cell.selectionStyle = UITableViewCellSelectionStyleNone;

        UIColor *backColor = [UIColor colorWithRed:1 green:1 blue:1 alpha:1];
        cell.backgroundColor = backColor;
        UIColor *foreColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:1];
        cell.textLabel.textColor = foreColor;

        cell.textLabel.text = @"row1";
    }
    else if ([indexPath row] == 2) 
    {
        cell.selectionStyle = UITableViewCellSelectionStyleNone;

        UIColor *backColor = [UIColor colorWithRed:1 green:1 blue:1 alpha:1];
        cell.backgroundColor = backColor;
        UIColor *foreColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:1];
        cell.textLabel.textColor = foreColor;

        cell.textLabel.text = @"row2";
    }
    return cell;
}

#pragma mark Table view delegate

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSIndexPath *path = [NSIndexPath indexPathForRow:0 inSection:[indexPath section]];
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:path];
    [cell setSelectionStyle:UITableViewCellSelectionStyleBlue];

    [tableView selectRowAtIndexPath:path animated:YES scrollPosition:UITableViewScrollPositionNone];

}

- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell = [tvStat cellForRowAtIndexPath:indexPath];
    [cell setSelectionStyle:UITableViewCellSelectionStyleNone];
}

#pragma mark Table view Gestures

-(IBAction)singleTapFrom:(UIGestureRecognizer *)tapRecog
{

    CGPoint tapLoc = [tapRecog locationInView:tvStat];
    NSIndexPath *tapPath = [tvStat indexPathForRowAtPoint:tapLoc];

    NSIndexPath *seleRow = [tvStat indexPathForSelectedRow];
    if([seleRow section] != [tapPath section])
        [self tableView:tvStat didDeselectRowAtIndexPath:seleRow];
    else if (seleRow == nil )
        {}
    else if([seleRow section] == [tapPath section] || [seleRow length] != 0)
        return;

    if(!tapPath)
        [self.view endEditing:YES];

    [self tableView:tvStat didSelectRowAtIndexPath:tapPath];
}

1

কাস্টম সেল শ্রেণীর ক্ষেত্রে। শুধু ওভাররাইড করুন:

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

    // Configure the view for the selected state

    if (selected) {
        [self setBackgroundColor: CELL_SELECTED_BG_COLOR];
        [self.contentView setBackgroundColor: CELL_SELECTED_BG_COLOR];
    }else{
        [self setBackgroundColor: [UIColor clearColor]];
        [self.contentView setBackgroundColor: [UIColor clearColor]];
    }
}

0

টেবিল দেখার শৈলী সহজ হয়ে গেলে এটি সহজ তবে গোষ্ঠী শৈলীতে এটি একটু ঝামেলা হয়, আমি এটি এর দ্বারা সমাধান করি:

CGFloat cellHeight = [self tableView:tableView heightForRowAtIndexPath:indexPath];
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, kGroupTableViewCellWidth+2, cellHeight)];
view.backgroundColor = kCommonHighlightedColor;
cell.selectedBackgroundView = view;
[view release];
UIRectCorner cornerFlag = 0;
CGSize radii = CGSizeMake(0, 0);
NSInteger theLastRow = --> (yourDataSourceArray.count - 1);
if (indexPath.row == 0) {
    cornerFlag = UIRectCornerTopLeft | UIRectCornerTopRight;
    radii = CGSizeMake(10, 10);
} else if (indexPath.row == theLastRow) {
    cornerFlag = UIRectCornerBottomLeft | UIRectCornerBottomRight;
    radii = CGSizeMake(10, 10);
}
UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:view.bounds byRoundingCorners:cornerFlag cornerRadii:radii];
CAShapeLayer *shapeLayer = [CAShapeLayer layer];
shapeLayer.path = maskPath.CGPath;
view.layer.mask = shapeLayer;

কেগ্রুপ টেবিলভিউসেলউইউথের উল্লেখ করেছে, আমি এটিকে 300 হিসাবে সংজ্ঞায়িত করেছি, এটি আইফোনে গ্রুপ টেবিল ভিউ সেল প্রস্থের প্রস্থ


0
[cell setSelectionStyle:UITableViewCellSelectionStyleGray];

নির্বাচন প্রভাবটি ব্যবহার করতে আপনি উপরের লাইনটি ব্যবহার করেছেন তা নিশ্চিত করুন


0
override func setSelected(selected: Bool, animated: Bool) {
    // Configure the view for the selected state

    super.setSelected(selected, animated: animated)
    let selView = UIView()

    selView.backgroundColor = UIColor( red: 5/255, green: 159/255, blue:223/255, alpha: 1.0 )
    self.selectedBackgroundView = selView
}

সমস্ত উত্তরের পাঠকদের জন্য এটি পাঠযোগ্য হয়ে
উঠতে

0

আমি আইওএস 9.3 ব্যবহার করছি এবং স্টোরিবোর্ডের মাধ্যমে রঙ নির্ধারণ করছি বা সেটিং cell.selectionStyleআমার পক্ষে কার্যকর হয়নি তবে নীচের কোডটি কাজ করেছে:

UIView *customColorView = [[UIView alloc] init];
customColorView.backgroundColor = [UIColor colorWithRed:55 / 255.0 
                                                  green:141 / 255.0 
                                                   blue:211 / 255.0 
                                                  alpha:1.0];
cell.selectedBackgroundView = customColorView;

return cell;

আমি এই সমাধান এখানে পেয়েছি ।


0

নিম্নলিখিত অনুসরণ করার চেষ্টা করুন।

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

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:[cellIdArray objectAtIndex:indexPath.row] forIndexPath:indexPath];

    // Configure the cell...
    cell.backgroundView =
    [[UIImageView alloc] init] ;
    cell.selectedBackgroundView =[[UIImageView alloc] init];

    UIImage *rowBackground;
    UIImage *selectionBackground;


    rowBackground = [UIImage imageNamed:@"cellBackgroundDarkGrey.png"];
    selectionBackground = [UIImage imageNamed:@"selectedMenu.png"];

    ((UIImageView *)cell.backgroundView).image = rowBackground;
    ((UIImageView *)cell.selectedBackgroundView).image = selectionBackground;



    return cell;
}

// সুইফ্ট সংস্করণ:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {


        let cell = tableView.dequeueReusableCell(withIdentifier: "cell")! as UITableViewCell


        cell.selectedBackgroundView = UIImageView()
        cell.backgroundView=UIImageView()

        let selectedBackground : UIImageView = cell.selectedBackgroundView as! UIImageView
        selectedBackground.image = UIImage.init(named:"selected.png");

        let backGround : UIImageView = cell.backgroundView as! UIImageView
        backGround.image = UIImage.init(named:"defaultimage.png");

        return cell


    } 

0

সুইফট 4.x

নির্বাচনের ব্যাকগ্রাউন্ড পরিবর্তন করতে যে কোনও রঙের রঙে সুইফট এক্সটেনশন ব্যবহার করুন

নীচে হিসাবে ইউআইটিএবলভিউ সেল এক্সটেনশন তৈরি করুন

extension UITableViewCell{

    func removeCellSelectionColour(){
        let clearView = UIView()
        clearView.backgroundColor = UIColor.clear
        UITableViewCell.appearance().selectedBackgroundView = clearView
    } 

}

তারপরে অপসারণ সেলসেলেকশনকাল () সেল ইনস্ট্যান্স সহ ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.