উত্তর:
আপনি হাইলাইট রঙটি বিভিন্ন উপায়ে পরিবর্তন করতে পারেন।
আপনার ঘরের নির্বাচন স্টাইল সম্পত্তি পরিবর্তন করুন। আপনি যদি এটিতে পরিবর্তন করেন তবে এটি UITableViewCellSelectionStyleGray
ধূসর হবে।
selectedBackgroundView
সম্পত্তি পরিবর্তন করুন । আসলে যা নীল গ্রেডিয়েন্ট তৈরি করে তা হ'ল ভিউ। আপনি একটি ভিউ তৈরি করতে এবং আপনার পছন্দসই চিত্রটি আঁকতে পারেন, এবং দৃশ্যটি আপনার টেবিল দেখার ঘরগুলির পটভূমি হিসাবে ব্যবহার করতে পারেন।
selectedBackgroundView
এটি কেবল কখনও প্রদর্শিত হবে না never ডিফল্ট "নির্বাচন" সেট করার পরেই selectedBackgroundView
শো প্রদর্শিত হবে up আইওএস 6 এবং 7 এ পরীক্ষিত হয়েছে
cell.selectedBackgroundView = [UIView new];
এবং আপনি যে রঙ চয়ন করতে চান সেটি সেট করুন:cell.selectedBackgroundView.backgroundColor = [UIColor colorWithHex:@"ecf2f5" andAlpha:1];
জোনবল ইতিমধ্যে একটি দুর্দান্ত উত্তর সরবরাহ করেছে। আমি ভেবেছিলাম 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
আমার মনোনীত পটভূমির রঙ সঙ্গে যে আমি তৈরিএটি আমার পক্ষে ভাল কাজ করেছে। টিপ জোনবলের জন্য ধন্যবাদ
UITableViewCell
তিনটি ডিফল্ট নির্বাচনের শৈলী রয়েছে: -
বাস্তবায়ন নিম্নরূপ:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *) indexPath {
[cell setSelectionStyle:UITableViewCellSelectionStyleNone];
}
সুইফটে, এটিকে ব্যবহার করুন cellForRowAtIndexPath
let selectedView = UIView()
selectedView.backgroundColor = .white
cell.selectedBackgroundView = selectedView
আপনি যদি চান যে আপনার নির্বাচনের রঙ প্রতিটি ক্ষেত্রে একই হয় তবে এটি UITableViewCell
ব্যবহার করুন AppDelegate
।
let selectedView = UIView()
selectedView.backgroundColor = .white
UITableViewCell.appearance().selectedBackgroundView = selectedView
আপনি যদি অ্যাপ্লিকেশনটিকে প্রশস্ত করতে চান তবে আপনি আপনার অ্যাপ ডেলিগেটে যুক্তি যুক্ত করতে পারেন
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
}
সম্পূর্ণতার জন্য: আপনি যদি নিজের নিজস্ব সাবক্লাস তৈরি করে থাকেন 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;
}
}
(সোর্স কোড ডিআইভির ছোট প্রস্থের সাথে মাপসই করতে ব্যবহার করেন নি :)
এই পদ্ধতির সিলেক্টডব্যাকগ্রাউন্ডভিউ ব্যবহার করার ক্ষেত্রে দুটি সুবিধা রয়েছে, এটি কম মেমরি ব্যবহার করে এবং কিছুটা কম সিপিইউ ব্যবহার করে, আপনি শত শত কোষ প্রদর্শন না করা পর্যন্ত আপনি খেয়ালও করবেন না।
selectedBackgroundView
পদ্ধতির একেবারে শুরুতে একটি নতুন ভিউ নিয়োগের পরে এটি কাজ করবেself. selectedBackgroundView = [UIView new];
selectedBackgroundView
সম্পত্তির কোনও বিন্যাস ছাড়াই ।
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;
}
@ ব্যবহারকারীর উত্তরের ভিত্তিতে , আপনি কেবলমাত্র নিজের অ্যাপ্লিকেশন কোডের যে কোনও জায়গায় এই এক্সটেনশনটি যুক্ত করতে পারেন এবং আপনার অ্যাপ্লিকেশনটির প্রতিটি কক্ষের জন্য সরাসরি স্টোরিবোর্ড সম্পাদকে আপনার নির্বাচনের রঙ রাখতে পারেন:
@IBDesignable extension UITableViewCell {
@IBInspectable var selectedColor: UIColor? {
set {
if let color = newValue {
selectedBackgroundView = UIView()
selectedBackgroundView!.backgroundColor = color
} else {
selectedBackgroundView = nil
}
}
get {
return selectedBackgroundView?.backgroundColor
}
}
}
@IBDesignable class UIDesignableTableViewCell: UITableViewCell {
@IBInspectable var selectedColor: UIColor = UIColor.clearColor() {
didSet {
selectedBackgroundView = UIView()
selectedBackgroundView?.backgroundColor = selectedColor
}
}
}
আপনার স্টোরিবোর্ডে, অ্যাট্রিবিউটস ইন্সপেক্টরটিতে আপনার ইউআইটিএবল ভিউসিলের ক্লাসটি ইউআইডি ডিজাইনযোগ্য টেবিলভিউসেলকে সেট করুন, আপনি আপনার ঘরের নির্বাচিত রঙটি যে কোনও রঙে পরিবর্তন করতে পারবেন।
আপনি এটি আপনার সমস্ত কক্ষের জন্য ব্যবহার করতে পারেন। আপনার অ্যাট্রিবিউটস ইন্সপেক্টরটি এরকম দেখতে পাবেন।
UIColor.clear
, না UIColor.clearColor()
। নিশ্চিত যে এটি যদি সুইফটেও পরিবর্তন হয় তবে এটি ছাড়াও এটি কাজ করে @IBDesignable
।
সুইফট 3.0 / 4.0
আপনি যদি নিজের নিজস্ব কাস্টম সেল তৈরি করে থাকেন তবে আপনি সমস্ত কক্ষের জন্য নির্বাচনের রঙটি পরিবর্তন করতে পারেন awakeFromNib()
:
override func awakeFromNib() {
super.awakeFromNib()
let colorView = UIView()
colorView.backgroundColor = UIColor.orange.withAlphaComponent(0.4)
self.selectedBackgroundView = colorView
}