প্রোগ্রাম হিসাবে ইউআইটিএবলভি বিভাগের শিরোনাম কীভাবে সেট করবেন (আইফোন / আইপ্যাড)?


106

আমি UITableViewইন্টারফেস বিল্ডার ব্যবহার করে তৈরি করেছি storyboardsUITableViewসঙ্গে সেটআপ করা আছে static cellsএবং বিভিন্ন বিভাগে একটি সংখ্যা।

আমার যে সমস্যাটি হচ্ছে তা হ'ল আমি আমার অ্যাপ্লিকেশনটিকে বিভিন্ন ভাষায় সেটআপ করার চেষ্টা করছি। এটি করার জন্য আমার UITableViewকোনওভাবে বিভাগের শিরোনাম পরিবর্তন করতে সক্ষম হওয়া দরকার ।

দয়া করে কেউ আমাকে সাহায্য করতে পারেন? আদর্শভাবে আমি সমস্যাটি ব্যবহার করে যোগাযোগ করতে চাই IBOutletsতবে আমি সন্দেহ করি এটি এই ক্ষেত্রে এমনকি সম্ভব নয়। কোন পরামর্শ এবং পরামর্শ সত্যিই প্রশংসা করা হবে।

আগাম ধন্যবাদ.

উত্তর:


280

একবার আপনি নিজের ইউআইটিএবলভি delegateএবং আপনার নিয়ামকের সাথে সংযুক্ত হয়ে গেলে আপনি datasourceএরকম কিছু করতে পারেন:

ObjC

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

    NSString *sectionName;
    switch (section) {
        case 0:
            sectionName = NSLocalizedString(@"mySectionName", @"mySectionName");
            break;
        case 1:
            sectionName = NSLocalizedString(@"myOtherSectionName", @"myOtherSectionName");
            break;
        // ...
        default:
            sectionName = @"";
            break;
    }    
    return sectionName;
}

দ্রুতগতি

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

    let sectionName: String
    switch section {
        case 0:
            sectionName = NSLocalizedString("mySectionName", comment: "mySectionName")
        case 1:
            sectionName = NSLocalizedString("myOtherSectionName", comment: "myOtherSectionName")
        // ...
        default:
            sectionName = ""
    }
    return sectionName
}

আপনি কি স্টাটি বোর্ডটি স্ট্যাটিক সেল ব্যবহার করে সেটআপ করলে আসলেই ডাকা হবে তা নিশ্চিত? এটি আহ্বান করা হচ্ছে বলে মনে হচ্ছে না।
অনুমান করুন

7
আহ এটি দেখে মনে হচ্ছে আপনার বাস্তবায়ন numberOfSectionsInTableView:tableView:করতে হবে।
ড্র করুন

স্ট্যাটিক সেলগুলির জন্য, (সর্বাধিক) অন্যান্য সমস্ত ডেটা উত্স পদ্ধতি প্রয়োগ করা হয় না।
wcochran

2
@ numberOfSectionsInTableView:tableView:স্থিতিশীল কক্ষগুলির জন্য আইবিতে প্রয়োগ করা হয়েছে rew
wcochran

ছদ্মবেশী ঠিক আছে - আপনি যদি প্রয়োগ করেন numberOfSectionsInTableView:তবে শিরোনাম পদ্ধতিটি স্টোরিবোর্ডকে ডাকা হয় এবং ওভাররিজ করে। যেহেতু এই একটি স্ট্যাটিক tableview হয় তাহলে এটি একটি পদ্ধতি দিয়ে এটিকে ওভাররাইড করতে প্রশংসনীয় ঠিক আছে যে আয় একটি ধ্রুবক সংখ্যা @wcochran
GreatWiz

16

আপনি যদি সুইফটে কোড লিখছেন তবে এটি এর উদাহরণ হিসাবে দেখাবে

func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String?
{
    switch section
    {
        case 0:
            return "Apple Devices"
        case 1:
            return "Samsung Devices"
        default:
            return "Other Devices"
    }
}

10

ইউআইটিএবলভিউডাটা উত্স পদ্ধতিটি ব্যবহার করুন

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

5

শিরোনামফোর্ডহিডেরইনসেকশনটি ইউআইটিএবলভিউয়ের একটি প্রতিনিধি পদ্ধতি যাতে বিভাগের লেখার শিরোনাম পাঠ্য নীচে প্রয়োগ করতে পারেন,

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{
              return @"Hello World";
}

3

নোট যেটি -(NSString *)tableView: titleForHeaderInSection:ইউআইটিএবলভিউ দ্বারা ডাকা হয় না যদি ইউআইটিএবলভিউর - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)sectionপ্রতিনিধিদের মধ্যে প্রয়োগ করা হয়;


2
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
   return 45.0f; 
//set height according to row or section , whatever you want to do!
}

বিভাগ লেবেল পাঠ্য সেট করা হয়।

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
    UIView *sectionHeaderView;

        sectionHeaderView = [[UIView alloc] initWithFrame:
                             CGRectMake(0, 0, tableView.frame.size.width, 120.0)];


    sectionHeaderView.backgroundColor = kColor(61, 201, 247);

    UILabel *headerLabel = [[UILabel alloc] initWithFrame:
                            CGRectMake(sectionHeaderView.frame.origin.x,sectionHeaderView.frame.origin.y - 44, sectionHeaderView.frame.size.width, sectionHeaderView.frame.size.height)];

    headerLabel.backgroundColor = [UIColor clearColor];
    [headerLabel setTextColor:kColor(255, 255, 255)];
    headerLabel.textAlignment = NSTextAlignmentCenter;
    [headerLabel setFont:kFont(20)];
    [sectionHeaderView addSubview:headerLabel];

    switch (section) {
        case 0:
            headerLabel.text = @"Section 1";
            return sectionHeaderView;
            break;
        case 1:
            headerLabel.text = @"Section 2";
            return sectionHeaderView;
            break;
        case 2:
            headerLabel.text = @"Section 3";
            return sectionHeaderView;
            break;
        default:
            break;
    }

    return sectionHeaderView;
}

2

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

(মূল)

আমারও একই রকম প্রয়োজন ছিল। আমার মেইন.স্টোরিবোর্ডে (বেস) স্ট্যাটিক সেল সহ একটি স্ট্যাটিক টেবিল ছিল। স্ট্রিং ফাইলগুলি ব্যবহার করে বিভাগের শিরোনাম স্থানীয়করণের জন্য যেমন মেইন.স্ট্রিংস (জার্মান) কেবল স্টোরিবোর্ডে বিভাগটি নির্বাচন করুন এবং অবজেক্ট আইডি নোট করুন

অবজেক্ট আইডি

এর পরে আপনার স্ট্রিং ফাইলে যান, আমার ক্ষেত্রে মেইন.স্ট্রিংস (জার্মান) এবং অনুবাদটি sertোকান যেমন:

"MLo-jM-tSN.headerTitle" = "Localized section title";

অতিরিক্ত সম্পদ:


1

আমি UITableViewপ্রোটোকলের অতীত সংস্করণগুলি সম্পর্কে জানি না , তবে আইওএস 9 হিসাবে, প্রোটোকলের func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String?অংশ UITableViewDataSource

   class ViewController: UIViewController {

      @IBOutlet weak var tableView: UITableView!

      override func viewDidLoad() {
         super.viewDidLoad()
         tableView.dataSource = self
      }
   }

   extension ViewController: UITableViewDataSource {
      func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
         return "Section name"
      }
   }

delegateডেটা দিয়ে আপনার টেবিলটি পূরণ করার জন্য আপনাকে এটিকে ঘোষণা করার দরকার নেই ।

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