ইউআইটিএবলভিউ শিরোনাম বিভাগটি কাস্টমাইজ করুন


141

আমি UITableViewপ্রতিটি বিভাগের জন্য শিরোনাম কাস্টমাইজ করতে চাই । এখনও অবধি আমি বাস্তবায়ন করেছি

-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section

এই UITabelViewDelegateপদ্ধতি। আমি যা করতে চাই তা হ'ল প্রতিটি বিভাগের জন্য বর্তমান শিরোনাম পাওয়া এবং কেবলমাত্র UILabelএকটি সংক্ষিপ্তসার হিসাবে যুক্ত করা।

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

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

আমি প্রতিটি বিভাগ শিরোনামের জন্য এই ডিফল্ট মানগুলি কীভাবে পেতে পারি?

সবাইকে ধন্যবাদ.


1
ব্যবহারে কী দোষ tableView:titleForHeaderInSection:?
বোরার্ডেন

এটি একটি ফিরে আসে NSString, আমাকে কাস্টম ফন্ট সেট করা দরকার তাই আমি ব্যবহার করতে পারি নাtableView:titleForHeaderInSection:
লিমন

অথবা আপনি ডিফল্ট বিভাগের শিরোনামগুলি নকল করতে চিত্রগুলি ব্যবহার করতে পারেন। teehanlax.com/blog/ios-6-gui-psd-iphone-5
ডেসডেনোভা

@limon: বিভাগ হেডার বাস্তবায়ন কিভাবে: stackoverflow.com/a/32261262/1457385
shallowThought

উত্তর:


288

আপনি এটি চেষ্টা করতে পারেন:

 -(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
    UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, tableView.frame.size.width, 18)];
    /* Create custom view to display section header... */
    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(10, 5, tableView.frame.size.width, 18)];
    [label setFont:[UIFont boldSystemFontOfSize:12]];
     NSString *string =[list objectAtIndex:section];
    /* Section header is in 0th index... */
    [label setText:string];
    [view addSubview:label];
    [view setBackgroundColor:[UIColor colorWithRed:166/255.0 green:177/255.0 blue:186/255.0 alpha:1.0]]; //your background color...
    return view;
}

আপনি যে বিজি কালার ওয়াটইভার রঙ সেট করতে চান তা সেট করতে পারে
লোকানা রাগুপথি

এটিই সমস্যা, আপনি যা লিখেছেন তা ইতিমধ্যে করেছি done তবে আমি বিভাগের শিরোনামের ডিফল্ট পটভূমির রঙ জানি না, এটি ধূসর ধরণের। তবে, আমার এটি ঠিক ডিফল্ট বিভাগের শিরোনাম হওয়া দরকার।
লিমন

15
ওহে ডিজিটাল রঙের মিটার ব্যবহারে আসুন
লোকানা রাগুপথি

ইউআইএলবেলের ব্যাকগ্রাউন্ড কালারটিও সেট করে নিন তা নিশ্চিত করুন। আমি জানি আমার পটভূমি যখন আমার জন্য পরিষ্কার হয়ে উঠছিল না তখন আমি কিছুটা বিভ্রান্ত হয়ে পড়েছিলাম।
shulmey

3
লাইনে এনএসএসটিং * স্ট্রিং = এ তালিকাটি কী [তালিকাভুক্ত অবজেক্টএটিডেক্স: বিভাগ]; যে কেউ আমাকে বলতে পারেন
নিশা গুপ্ত

45

ব্যবহার করে নির্বাচিত উত্তরটি tableView :viewForHeaderInSection:সঠিক।

এখানে একটি টিপ ভাগ করতে।

আপনি যদি স্টোরিবোর্ড / এক্সিব ব্যবহার করছেন, তবে আপনি অন্য একটি প্রোটোটাইপ সেল তৈরি করতে এবং এটি আপনার "বিভাগের ঘর" এর জন্য ব্যবহার করতে পারেন। শিরোনামটি কনফিগার করার কোডটি আপনি সারি কক্ষগুলির জন্য কনফিগার করার মতো।

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
    static NSString *HeaderCellIdentifier = @"Header";

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

    // Configure the cell title etc
    [self configureHeaderCell:cell inSection:section];

    return cell;
}

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

@ কাচি সমাধানটি আপনি উল্লেখ করেছেন তেমন ব্যবহার করছে viewForHeaderInSectionনা canEditRowAtIndexPath। আপনি যে ক্র্যাশটি বলেছেন তা আমি কখনই যাচাই করতে পারি না, তবে কী আপনি দীর্ঘমেয়াদী প্রেস ক্র্যাশের কারণ হয়ে উঠতে পারেন তা আলোকিত করতে পারেন?
samwize

1
আমার অর্থ হ'ল আপনি যদি এই সমাধানটি প্রয়োগ করেন এবং canEditRowAtIndexPath প্রয়োগ করেন তবে আপনি দেখতে পাবেন যে শীর্ষস্থানীয় সারিটি আপনি সর্বাধিক সারি দিয়ে স্লাইড করে যাবেন যা আপনি সেল কনটেন্টভিউ না ফিরিয়ে দিলে dele এই এসও পোস্টটি দেখুন: stackoverflow.com/questions/26009722/… দীর্ঘ প্রেস একটি ক্র্যাশ ঘটায় কারণ একটি বার্তা একটি বিচ্ছিন্ন অবজেক্টে প্রেরণের চেষ্টা করে। এই এসও পোস্টটি দেখুন: stackoverflow.com/questions/27622290/…
কাচি

1
দয়া করে কখনও UITableViewCellশিরোনামের দর্শন হিসাবে ব্যবহার করবেন না । ভিজ্যুয়াল গ্ল্যাচগুলি ডিবাগ করা আপনার পক্ষে খুব কঠিন হয়ে উঠবে - কোষগুলি কীভাবে চিহ্নিত হয় তার কারণে শিরোনামটি কখনও কখনও অদৃশ্য হয়ে যায় এবং আপনি কেন ঘণ্টার জন্য সন্ধান করতে পারবেন যতক্ষণ না আপনি বুঝতে পেরেছেন UITableViewCellযে UITableViewশিরোনামের অন্তর্ভুক্ত নয়।
raven_raven

UITableViewCellশিরোনাম হিসাবে একটি ব্যবহার সহজভাবে ভুল।
অ্যালেক্স জাভাটোন

31

এর সুইফট সংস্করণ লোচন Tejas উত্তর:

override func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
    let view = UIView(frame: CGRectMake(0, 0, tableView.frame.size.width, 18))
    let label = UILabel(frame: CGRectMake(10, 5, tableView.frame.size.width, 18))
    label.font = UIFont.systemFontOfSize(14)
    label.text = list.objectAtIndex(indexPath.row) as! String
    view.addSubview(label)
    view.backgroundColor = UIColor.grayColor() // Set your background color

    return view
}

1
ভিউয়ের অভ্যন্তরে থাকা পাঠ্য অনুসারে কীভাবে লেবেলের উচ্চতা গতিশীল করবেন?
প্রতীক শাহ

overrideশব্দ অপ্রয়োজনীয়। আরও কী, শিরোনামের দৃষ্টিভঙ্গিগুলি পুনরায় তৈরি করার পরিবর্তে পুনরায় ব্যবহার বিবেচনা করুন।
ভাদিম বুলাভিন

17

আপনি যদি ডিফল্ট শিরোনাম দর্শন ব্যবহার করেন তবে আপনি কেবলমাত্র এটির সাহায্যে পাঠ্যটি পরিবর্তন করতে পারেন

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section

সুইফ্টের জন্য:

override func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String? {

আপনি যদি ভিউটি কাস্টমাইজ করতে চান তবে আপনাকে নিজের একটি নতুন তৈরি করতে হবে।


10

আপনি কেবল এটি ব্যবহার করতে পারেন যদি আপনি - (ইউআইভিউ *) টেবিলভিউ: (ইউআইটিএলভিউ *) টেবিলভিউ ভিউফিয়ার্ডারআইনসেকশন: (এনএসআইঞ্জার) বিভাগটি ব্যবহার না করেন।
SAHM

1
পুরোপুরি বৈধ উত্তর। এছাড়াও, ইউআইটিএবল ভিউহাইডারফুটারভিউ ব্যবহার করে কোষের মতো দেখতে পুনর্ব্যবহার করা থেকে উপকার পাওয়া যায়।
গ্রেগজো

6
@ dmarsi আমি তাদের অবমাননার কোনও প্রমাণ পাইনি।
ফোকস

8

যদি শিরোনামআইনসেকশন না দেখানো হয় তবে এটি চেষ্টা করে দেখতে পারেন।

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
    return 45;
}

প্রদত্ত বিভাগের শিরোনামের জন্য এটি একটি উচ্চতা প্রদান করে।


1
আপনার উত্তরটি বিস্তারিতভাবে মনে আছে?
সিনকাউট

শিরোনাম বিভাগটি প্রদর্শন করবে না যদি না আপনি কোনও পদ্ধতি দিয়ে বিভাগের শিরোনামটির 'উচ্চতা' হুক করেন। উচ্চতা নির্দিষ্ট না করা থাকলে UITableView ডিফল্ট শিরোনাম প্রদর্শন না করে। @ সিনকাউট
প্রজেক্টোবোট

6

সুইচ 3 সংস্করণ লোকানা এবং এসটেমেন্ডোজার উত্তর:

override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {

    let view = UIView(frame: CGRect(x:0, y:0, width:tableView.frame.size.width, height:18))
    let label = UILabel(frame: CGRect(x:10, y:5, width:tableView.frame.size.width, height:18))
    label.font = UIFont.systemFont(ofSize: 14)
    label.text = "This is a test";
    view.addSubview(label);
    view.backgroundColor = UIColor.gray;
    return view

}

এছাড়াও, আপনাকেও বাস্তবায়ন করতে হবে:

override func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
    return 100;
}

5

এটা চেষ্টা কর......

override func tableView(tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) 
{
    // Background view is at index 0, content view at index 1
    if let bgView = view.subviews[0] as? UIView
    {
        // do your stuff
    }

    view.layer.borderColor = UIColor.magentaColor().CGColor
    view.layer.borderWidth = 1
}

5

অন্যান্য উত্তরগুলি ডিফল্ট শিরোনাম দর্শন পুনরুদ্ধার করতে ভাল কাজ করে তবে আসলে আপনার মূল প্রশ্নের উত্তর দেবেন না:

ডিফল্ট বিভাগের শিরোনাম পাওয়ার কোনও উপায় আছে কি?

একটি উপায় আছে - কেবল tableView:willDisplayHeaderView:forSection:আপনার প্রতিনিধি প্রয়োগ করুন। ডিফল্ট শিরোনাম দর্শনটি দ্বিতীয় প্যারামিটারে পাঠানো হবে এবং সেখান থেকে আপনি এটিতে কাস্ট করতে পারেন UITableViewHeaderFooterViewএবং তারপরে আপনার ইচ্ছামত সাবভিউগুলি যুক্ত / পরিবর্তন করতে পারেন।

OBJ-সি

- (void)tableView:(UITableView *)tableView willDisplayHeaderView:(UIView *)view forSection:(NSInteger)section
{
    UITableViewHeaderFooterView *headerView = (UITableViewHeaderFooterView *)view;

    // Do whatever with the header view... e.g.
    // headerView.textLabel.textColor = [UIColor whiteColor]
}

দ্রুতগতি

override func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int)
{
    let headerView = view as! UITableViewHeaderFooterView

    // Do whatever with the header view... e.g.
    // headerView.textLabel?.textColor = UIColor.white
}

আপনার এটি কাস্ট করার দরকার নেই। আপনি যা দেখতে চান তা কেবল যুক্ত করতে পারেন। প্রকৃতপক্ষে, কোনও নতুন অবজেক্ট তৈরি করা আপনার কিছুই বরাদ্দ না করা ছাড়া কিছুই করবে না view
অ্যালেক্স জাভাটোন

পছন্দ করুন আপনি যদি পাঠ্য লেবেলের মতো কিছু ডিফল্ট মতামত কাস্টমাইজ করতে চান তবে এটি সহায়ক।
ক্রেগ ব্রাউন

4
-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
    //put your values, this is part of my code
    UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, 30.0f)];
    [view setBackgroundColor:[UIColor redColor]];
    UILabel *lbl = [[UILabel alloc] initWithFrame:CGRectMake(20, 5, 150, 20)];
    [lbl setFont:[UIFont systemFontOfSize:18]];
    [lbl setTextColor:[UIColor blueColor]];
    [view addSubview:lbl];

    [lbl setText:[NSString stringWithFormat:@"Section: %ld",(long)section]];

    return view;
}

4

এটিই সম্ভব সবচেয়ে সহজ সমাধান। নিম্নলিখিত কোডটি কাস্টম বিভাগের শিরোনাম তৈরির জন্য সরাসরি ব্যবহার করা যেতে পারে।

 -(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
    SectionHeaderTableViewCell *headerView = [tableView dequeueReusableCellWithIdentifier:@"sectionHeader"];

    //For creating a drop menu of rows from the section
    //==THIS IS JUST AN EXAMPLE. YOU CAN REMOVE THIS IF-ELSE.==
    if (![self.sectionCollapsedArray[section] boolValue])
    {
        headerView.imageView.image = [UIImage imageNamed:@"up_icon"];
    }
    else
    {
        headerView.imageView.image = [UIImage imageNamed:@"drop_icon"];
    }

    //For button action inside the custom cell
    headerView.dropButton.tag = section;
    [headerView.dropButton addTarget:self action:@selector(sectionTapped:) forControlEvents:UIControlEventTouchUpInside];

    //For removing long touch gestures.
    for (UIGestureRecognizer *recognizer in headerView.contentView.gestureRecognizers)
    {
        [headerView.contentView removeGestureRecognizer:recognizer];
        [headerView removeGestureRecognizer:recognizer];
    }

    return headerView.contentView;
}

দ্রষ্টব্য: সেকশনহিডারটেবলভিউসেল স্টোরিবোর্ডে তৈরি একটি কাস্টম ইউআইটিএবলভিউসেল।


বিভাগ হিডার টেবিলভিউসেল - অঘোষিত শনাক্তকারী ব্যবহার
বোরিস গফুরভ

@ বোরিসগাফুরভ বিভাগহাইডার টেবিলভিউসেল কেবলমাত্র একটি উদাহরণ যা আমি আমার ইউআইটিএবলভিচেল দিয়েছি, যা আমি স্টোরিবোর্ডে তৈরি করেছি।
আনিস কুমার

2

আমি যদি আপনি থাকতাম তবে আমি এমন একটি পদ্ধতি তৈরি করতাম যা একটি ইউআইভিউউকে একটি এনএসএস স্ট্রিং দিয়ে থাকে returns উদাহরণ স্বরূপ

+ (UIView *) sectionViewWithTitle:(NSString *)title;

এই পদ্ধতির বাস্তবায়নে একটি ইউআইভিউউ তৈরি করুন, আপনি যে বৈশিষ্ট্যগুলি সেট করতে চান তার সাথে এটিতে একটি ইউআইএলবেল যুক্ত করুন এবং অবশ্যই অবশ্যই তার শিরোনাম প্রদত্তটির সাথে সেট করুন।


হ্যাঁ, আমি এটি করতে পারি তবে আমার প্রশ্নটি হল আমি কীভাবে ডিফল্ট বিভাগের শিরোনামের পটভূমি, ছায়ার মান পেতে পারি, বাকিটি কার্যকর করা সহজ।
লিমন

ডিফল্ট বিভাগ শিরোনামের পটভূমিতে আপনার অর্থ কী
লোকানা রাগুপথি

1
ভাল, আপনার পছন্দের রংগুলি পেতে ডিজিটাল কালার মিটার অ্যাপ্লিকেশনটি ব্যবহার করা সবচেয়ে সহজ। কোড অনুসারে তাদের নেওয়া শক্ত হবে, যতদূর আমি বলতে পারি ...
cpprulez

2

@ সুইউটে সাম্যুইজের সমাধান (তাই তাকে উজ্জীবিত করুন!)। শিরোনাম / পাদচরণ বিভাগগুলির জন্য একই পুনর্ব্যবহারযোগ্য প্রক্রিয়া ব্যবহার করে উজ্জ্বল:

func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
    let settingsHeaderSectionCell:SettingsHeaderSectionCell = self.dequeueReusableCell(withIdentifier: "SettingsHeaderSectionCell") as! SettingsHeaderSectionCell

    return settingsHeaderSectionCell
}

2
- (void)tableView:(UITableView *)tableView willDisplayHeaderView:(UIView *)view forSection:(NSInteger)section
{
    if([view isKindOfClass:[UITableViewHeaderFooterView class]]){

        UITableViewHeaderFooterView *headerView = view;

        [[headerView textLabel] setTextColor:[UIColor colorWithHexString:@"666666"]];
        [[headerView textLabel] setFont:[UIFont fontWithName:@"fontname" size:10]];
    }
}

আপনি যদি নিজের বিভাগের শিরোনামে পাঠ্য লেবেলের ফন্টটি পরিবর্তন করতে চান তবে আপনি এটি উইলে ডিসপ্লেহাইডারভিউতে করতে চান। পাঠ্যটি সেট করতে আপনি এটি ফোর্ডহাইডারইনসেকশন বা শিরোনামফোর্ডহিডেরইনসেকশনে করতে পারেন। শুভকামনা!


2

কপিরাইট এবং পেস্ট করার সম্পূর্ণ 2019 উদাহরণ

স্টোরিবোর্ডে প্রথম "গোষ্ঠীযুক্ত" সেট করুন: এটি সূচনাকালীন সময়ে ঘটতে হবে, আপনি সত্যই পরে এটি সেট করতে পারবেন না, সুতরাং স্টোরিবোর্ডে এটি মনে রাখা আরও সহজ:

এখানে চিত্র বর্ণনা লিখুন

পরবর্তী,

অ্যাপল বাগের কারণে উচ্চতারফোঁটাওয়ালাআইনসেকশন অবশ্যই প্রয়োগ করতে হবে

func tableView(_ tableView: UITableView,
                   heightForHeaderInSection section: Int) -> CGFloat {
    return CGFloat(70.0)
}

এখনও দশ বছর ধরে একটি অ্যাপল বাগ রয়েছে - যেখানে আপনার heightForHeaderInSectionকল না থাকলে এটি কেবল প্রথম শিরোনামটি (যেমন সূচক 0) প্রদর্শন করবে না ।

সুতরাং, tableView.sectionHeaderHeight = 70কেবল কাজ করে না, এটি ভেঙে গেছে

ফ্রেম সেট করা কিছুই অর্জন করে না:

ইন viewForHeaderInSectionকেবল একটি UIView তৈরি ()।

এটি অর্থহীন / ইউটিউভি (ফ্রেম ...) না থাকলে কিছুই অর্জন করে না কারণ iOS কেবল সারণির দ্বারা নির্ধারিত হিসাবে দৃশ্যের আকার নির্ধারণ করে।

সুতরাং প্রথম লাইন viewForHeaderInSection হবে let view = UIView()এবং এটিই আপনি ফিরে আসছেন।

func tableView(_ tableView: UITableView,
                       viewForHeaderInSection section: Int) -> UIView? {
    let view = UIView()
    
    let l = UILabel()
    view.addSubview(l)
    l.bindEdgesToSuperview()
    l.backgroundColor = .systemOrange
    l.font = UIFont.systemFont(ofSize: 15)
    l.textColor = .yourClientsFavoriteColor
    
    switch section {
    case 0:
        l.text =  "First section on screen"
    case 1:
        l.text =  "Here's the second section"
    default:
        l.text =  ""
    }
    
    return view
}

এটাই - অন্য যে কোনও কিছুই সময় অপচয় করা।

আরেকটি "উদ্বেগজনক" অ্যাপল ইস্যু।


উপরে ব্যবহৃত সুবিধা বর্ধিতকরণটি হ'ল:

extension UIView {
    
    // incredibly useful:
    
    func bindEdgesToSuperview() {
        
        guard let s = superview else {
            preconditionFailure("`superview` nil in bindEdgesToSuperview")
        }
        
        translatesAutoresizingMaskIntoConstraints = false
        leadingAnchor.constraint(equalTo: s.leadingAnchor).isActive = true
        trailingAnchor.constraint(equalTo: s.trailingAnchor).isActive = true
        topAnchor.constraint(equalTo: s.topAnchor).isActive = true
        bottomAnchor.constraint(equalTo: s.bottomAnchor).isActive = true
    }
}

1

দ্রুতভাবে টেবিল ভিউ শিরোনামটিকে যাদুতে যুক্ত করুন

সম্প্রতি আমি এটি চেষ্টা করেছিলাম।

পুরো ইউআইটিএবলভিউতে আমার একটি এবং একটি মাত্র শিরোনাম দরকার।

আমি যেমন টেবিলভিউয়ের শীর্ষে একটি ইউআইআইমেজভিউ চেয়েছিলাম। সুতরাং আমি ইউআইটিএবলভিউসিলের শীর্ষে একটি ইউআইআইমেজভিউ যুক্ত করেছি এবং স্বয়ংক্রিয়ভাবে এটি একটি টেবিল ভিউহাইডার হিসাবে যুক্ত হয়েছিল। এখন আমি ভিউ কনট্রোলারের সাথে ইমেজভিউটি সংযুক্ত করেছি এবং চিত্রটি যুক্ত করেছি।

আমি বিভ্রান্ত হয়ে পড়েছিলাম কারণ প্রথমবারের মতো এই জাতীয় কিছু করেছি। সুতরাং আমার বিভ্রান্তি দূর করতে মেইনস্টিরিবোর্ডের এক্সএমএল ফর্ম্যাটটি খুলুন এবং শিরোনাম হিসাবে ইমেজ ভিউ যুক্ত করা হয়েছে found

এটা আমার জন্য কাজ করেছে। ধন্যবাদ এক্সকোড এবং দ্রুত।


1

এই প্রতিনিধি পদ্ধতি কল

-(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{

return @"Some Title";
}

এটি গতিশীল শিরোনাম সহ স্বয়ংক্রিয়ভাবে একটি ডিফল্ট শিরোনাম যুক্ত করার সুযোগ দেবে।

আপনি পুনরায় ব্যবহারযোগ্য এবং কাস্টমাইজযোগ্য শিরোনাম / পাদচরণ ব্যবহার করতে পারেন।

https://github.com/sourov2008/UITableViewCustomHeaderFooterSection


1

swif 4.2

override func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
    guard let header = view as? UITableViewHeaderFooterView else { return }

    header.textLabel?.textAlignment = .center // for all sections

    switch section {
    case 1:  //only section No.1
        header.textLabel?.textColor = .black
    case 3:  //only section No.3
        header.textLabel?.textColor = .red
    default: //
        header.textLabel?.textColor = .yellow
    }
}


0

আপনি যদি কেবল টেবিলভিউতে শিরোনাম যুক্ত করতে চান তবে শিরোনামটি কোনও দর্শন যুক্ত করবেন না। দ্রুত 3.x এ কোডটি এরকম হয়:

override func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
    var lblStr = ""
    if section == 0 {
        lblStr = "Some String 1"
    }
    else if section == 1{
        lblStr = "Some String 2"
    }
    else{
        lblStr = "Some String 3"
    }
    return lblStr
}

আপনি শিরোনামগুলি শিরোনাম আনার জন্য একটি অ্যারে প্রয়োগ করতে পারেন।


0

আপনার নিজের বিভাগের শিরোনামটি পুনর্নির্মাণের পরিবর্তে মূল প্রশ্নে ফিরে (4 বছর পরে), আইওএস সহজেই আপনাকে কল করতে পারে (উইলডিসপ্লেহাইডারভিউ: ফোরসেকশন সহ :) :) এটি ডিফল্ট তৈরি হওয়ার ঠিক পরে। উদাহরণস্বরূপ, আমি বিভাগের শিরোনামের ডান প্রান্তে একটি গ্রাফ বোতাম যুক্ত করতে চেয়েছিলাম:

- (void)tableView:(UITableView *)tableView willDisplayHeaderView:(UIView *)view forSection:(NSInteger)section {
    UITableViewHeaderFooterView * header = (UITableViewHeaderFooterView *) view;
    if (header.contentView.subviews.count >  0) return; //in case of reuse
    CGFloat rightEdge = CGRectGetMaxX(header.contentView.bounds);
    UIButton * button = [[UIButton alloc] initWithFrame:CGRectMake(rightEdge - 44, 0, 44, CGRectGetMaxY(header.contentView.bounds))];
    [button setBackgroundImage:[UIImage imageNamed:@"graphIcon"] forState:UIControlStateNormal];
    [button addTarget:self action:@selector(graphButtonPressed:) forControlEvents:UIControlEventTouchUpInside];
    [view addSubview:button];
}

0

tableView: willDisplayHeaderView:দৃশ্যটি প্রদর্শিত হওয়ার সময় কাস্টমাইজ করতে ব্যবহার করুন ।

এটি আপনাকে পুরো শিরোনামের ভিউটি নিজেকে পুনরায় তৈরি করার পরিবর্তে শিরোনামের দৃষ্টিভঙ্গির জন্য ইতিমধ্যে তৈরি করা ভিউটি নিতে এবং এটি প্রসারিত করতে সক্ষম হওয়ার সুবিধা দেয়।

এখানে একটি উদাহরণ যা একটি বিওওএল এর উপর ভিত্তি করে শিরোলেখ বিভাগে রঙ দেয় এবং শিরোনামটিতে বিশদ পাঠ্য উপাদান যুক্ত করে।

- (void)tableView:(UITableView *)tableView willDisplayHeaderView:(UIView *)view forSection:(NSInteger)section
{
//    view.tintColor = [UIColor colorWithWhite:0.825 alpha:1.0]; // gray
//    view.tintColor = [UIColor colorWithRed:0.825 green:0.725 blue:0.725 alpha:1.0]; // reddish
//    view.tintColor = [UIColor colorWithRed:0.925 green:0.725 blue:0.725 alpha:1.0]; // pink

    // Conditionally tint the header view
    BOOL isMyThingOnOrOff = [self isMyThingOnOrOff];

    if (isMyThingOnOrOff) {
        view.tintColor = [UIColor colorWithRed:0.725 green:0.925 blue:0.725 alpha:1.0];
    } else {
        view.tintColor = [UIColor colorWithRed:0.925 green:0.725 blue:0.725 alpha:1.0];
    }

    /* Add a detail text label (which has its own view to the section header… */
    CGFloat xOrigin = 100; // arbitrary
    CGFloat hInset = 20;
    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(xOrigin + hInset, 5, tableView.frame.size.width - xOrigin - (hInset * 2), 22)];

    label.textAlignment = NSTextAlignmentRight;

    [label setFont:[UIFont fontWithName:@"Helvetica-Bold" size:14.0]
    label.text = @"Hi.  I'm the detail text";

    [view addSubview:label];
}

0

সুইফট 4.2

সুইফটে ৪.২-এ টেবিলের নামটি কিছুটা পরিবর্তন করা হয়েছে।

    func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
        let view = UIView(frame: CGRect(x: 0, y: 0, width: tableView.frame.size.width, height: 18))
        let label = UILabel(frame: CGRect(x: 10, y: 5, width: tableView.frame.size.width, height: 18))
        label.font = UIFont.systemFont(ofSize: 14)
        label.text = list.objectAtIndex(section) as! String
        view.addSubview(label)
        view.backgroundColor = UIColor.gray // Set your background color

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