আমি কীভাবে একটি ইউআইটিএবলভিউকে দলবদ্ধ শৈলীতে সেট করতে পারি


91

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

[self.tableView setGroupedStyle]

আমি স্ট্যাক ওভারফ্লোতে অনুসন্ধান করেছিলাম, তবে কোনও উত্তর দিয়ে আসতে পারিনি।


সুইফ্ট সংস্করণ: লিঙ্ক
জুয়ান বোয়েরো

উত্তর:


108

আপনি যদি বলতে চান তা আমি বুঝতে পারি তবে আপনাকে সেই স্টাইলটি দিয়ে আপনার নিয়ামকটি আরম্ভ করতে হবে। কিছুটা এইরকম:

myTVContoller = [[UITableViewController alloc] initWithStyle:UITableViewStyleGrouped];

4
যেমনটি বলা হয়েছে এটি কোনও সম্পত্তি নয় যা পরিবর্তন করা যায়। একটি দল সর্বদা দলবদ্ধ ছিল।
কোরি ফ্লয়েড

এটি সঠিক উত্তর নয়, এটি কোনও ইউআইটিএবলভিউ কনট্রোলার সাবক্লাস থাকার সমস্যা সমাধান করছে না। আপনি যদি ইউআইটিএবলভিউ কনট্রোলারের উত্তরাধিকারী হন তবে আপনাকে অন্য ইউআইটিএবলভিউ বা ইউআইটিএবলভিউ কনট্রোলার তৈরি না করে কনস্ট্রাক্টরকে ওভাররাইড করতে হবে।
মিকায়েল

প্রশ্নটিতে বর্ণিত একটি সাবক্ল্যাসড কন্ট্রোলার হলে কীভাবে আপনি এটি করবেন?
এথান ঝাও

132

আপনি নিম্নলিখিতটি করতে পারেন:

UITableView *myTable = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStyleGrouped];

সুইফট 3:

let tableView = UITableView.init(frame: CGRect.zero, style: .grouped)

12
এটিই সত্য সমাধান! ধন্যবাদ। স্বীকৃত উত্তরটি ভুল, কমপক্ষে ওএস 3.0+ এর জন্য
ডক

4
দয়া করে নোট করুন যে গৃহীত সমাধানে টাইপো ছিল। আমি এখন এটি স্থির করেছি। উভয় উত্তর আমার পক্ষে কাজ করে তবে তারা বিভিন্ন জিনিস ইনস্ট্যান্ট করে। এই উত্তরটি হ'ল UITableView, গৃহীত উত্তর হ'ল ক UITableViewController
নেভান রাজা

4
আসলে, গৃহীত উত্তর বিভ্রান্তিকর। ওপি কী বলেছে তা দয়া করে পড়ুন "আমার কাছে একটি ইউআইটিএবলভিউকনোট্রোলার সাবক্লাস রয়েছে"। কেবলমাত্র গৃহীত উত্তর আপনাকে একটি সরল জেন দেয় ইউআইটিএবলভিউ কনট্রোলার; বিশদ না জেনে সাবক্লাস সম্পর্কিত ব্যবহারকারীদের সমস্যা সমাধান করা অসম্ভব। এই উত্তরটি এবং সেলফ.মিটেবল ব্যবহার করা সম্ভবত আরও ভাল হবে, আইএমএইচও।
ভয়ানক বিড়াল

এটি আইওএস 8 এর প্রতিবন্ধকতাগুলির সাথেও কাজ করে (আইওএস 7 সম্পর্কে জানেন না) ... কেবল CGRectZeroআপনার টেবিলভিউ শৈলীর সাথে একটি ফ্রেম দিয়ে আরম্ভ করুন এবং তারপরে আপনার সীমাবদ্ধতা যুক্ত করুন এবং আপনার সীমাবদ্ধতার পাশাপাশি আপনি সঠিক শৈলীটি পাবেন get
গ্লেন সেল

20

আমি আপনাকে আমার সমাধানটি দিচ্ছি, আমি "XIB মোড" এ কাজ করছি, এখানে একটি ইউআইটিএবল ভিউ কনট্রোলারের একটি সাবক্লাসের কোড:

-(id)initWithCoder:(NSCoder *)aDecoder
{
    self = [super initWithStyle:UITableViewStyleGrouped];
    return self;
}

6
এই সমাধানের জন্য সতর্কতা - এটি যদি এনআইবি-তে নেভিগেশন নিয়ন্ত্রণের অধীনে থাকে তবে এটি সেই উল্লেখটি হারাবে এবং আপনাকে সত্যই বিভ্রান্ত করবে।
জেসি মিলিকান

14

কোডটির নিচে আমার জন্য ওয়ার্ক করা হয়েছে, আমি ইউআইটিএবলভিউ ক্লাসও ব্যবহার করছি

- (id)initWithStyle:(UITableViewStyle)style
{
     self = [super initWithStyle:UITableViewStyleGrouped];

     if (self)
    {

     }
    return self;
}

4
এটি ইউআইটিএবলভিউকন্ট্রোলারের একটি সাবক্লাস ব্যবহার করা লোকের জন্য সঠিক সমাধান। ধন্যবাদ!
চাদ পাভলিস্কা

11

আপনি যদি ইউআইটিএবলভিউ কনট্রোলার উত্তরাধিকার সূত্রে পান তবে আপনি কেবল টেবিলভিউটি আবার শুরু করতে পারেন।

উদ্দেশ্য গ:

self.tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStyleGrouped];

দ্রুত:

self.tableView = UITableView(frame: CGRect.zero, style: .grouped)

6

যে সেট করা প্রশ্নে উল্লিখিত হিসাবে হার্ড না। আসলে এটি বেশ সহজ। স্টোরিবোর্ডে এটি ব্যবহার করে দেখুন।

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


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

3

সুইফট 4

সাধারণ টেবিলভিউ ব্যবহার করা

let tableView = TableView(frame: .zero, style: .grouped)

টিপিকেয়ারবোর্ডটি চালিয়ে যাওয়া টেবিলভিউ ব্যবহার করা

let tableView = TPKeyboardAvoidingTableView(frame: .zero, style: .grouped)


2

নিজেই গ্রুপে গোষ্ঠীযুক্ত শৈলীর জন্য: -তাই টেবিলভিউ নির্বাচন করুন তারপরে "স্টাইল" (অ্যাট্রিবিউট ইন্সপেক্টরতে) পরিবর্তন করুন সমতল থেকে গোষ্ঠীভুক্ত করুন।


2

আপনি যদি ইতিমধ্যে একটি পৃথক সুইফ্ট ফাইলে তৈরি করেছেন এমন সাবক্লাসে এটি ব্যবহার করতে চান তবে আপনি এটি করতেও পারেন (সম্ভবত 100% সঠিক নয় তবে কাজ করে)

override init(style: UITableViewStyle) {
    super.init(style: style)
    UITableViewStyle.Grouped
}

required init?(coder aDecoder: NSCoder) {
    fatalError("init(coder:) has not been implemented")
}

এখন আপনি appdelegate.swift এ আপনি কল করতে পারেন:

let settingsController = SettingsViewController(style: .Grouped)

1

আপনি স্টোরিবোর্ড / এক্সআইবি ব্যবহার করে এটি করতে পারেন

  1. স্টোরিবোর্ডে যান -> আপনার ভিউকন্ট্রোলার নির্বাচন করুন -> আপনার টেবিলটি নির্বাচন করুন
  2. ইন্টারফেস-বিল্ডারে "স্টাইল" বৈশিষ্ট্যটি নির্বাচন করুন
  3. "দলবদ্ধ" নির্বাচন করুন
  4. সম্পন্ন

0

আপনার যদি আরও টেবিলের জন্য একটি টেবিলভিউ থাকে এবং আপনি এই টেবিলগুলির একটির গোষ্ঠীভুক্ত হন এবং অন্যটি একটি সমতল, আপনি ইউআইটিএবলভিউডেলিগেট থেকে ফাংশনটির সাহায্যে প্লেইন স্টাইলটি অনুকরণ করতে পারেন:

override func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {   
    return CGFloat.min
}

0

দ্রুত 4

আপনি যদি স্টোরিবোর্ড ব্যবহার না করতে চান তবে এটি সহায়তা হতে পারে।

আপনি টেবিল দেখুন যুক্ত করতে পারেন এবং একটি বন্ধের মধ্যে বৈশিষ্ট্য সেট করতে পারেন:

lazy var tableView: UITableView = {
        let tableView = UITableView(frame: .zero, style: .grouped)

        tableView.backgroundColor = UIColor(named: Palette.secondaryLight.rawValue)
        tableView.rowHeight = 68
        tableView.separatorStyle = .none
        tableView.translatesAutoresizingMaskIntoConstraints = false
        return tableView
    }()

তারপরে সাবউভিউ যুক্ত করুন এবং সীমাবদ্ধতা সেট করুন।


-5

আপনি পৃথককারী রেখার রঙটি পরিষ্কার করার চেষ্টা করতে পারেন যা গোষ্ঠীবদ্ধ শৈলীর প্রভাব দিতে পারে:

[myTVContoller.tableView setSeparatorColor:[UIColor clearColor]];

বিভাগগুলি এইভাবে ধসে পড়বে না।
ব্রুকটা


-28
self.tableView.style = UITableViewStyleGrouped

সম্পাদনা:

ধরে নেওয়া হয়েছে এটি একটি পড়ার / লেখার সম্পত্তি। সেক্ষেত্রে আপনি হয় ডিমিট্রিসের পরামর্শ অনুসরণ করতে পারেন এবং কন্ট্রোলার ইনস্ট্যান্ট করার সময় স্টাইল সেট করতে পারেন, বা (আপনি যদি এক্সআইবি ব্যবহার করেন), আপনি আইবির মাধ্যমে সেট করতে পারেন।


উত্তরের জন্য ধন্যবাদ. আমি এক্সআইবি ব্যবহার করছি না, আমার একটি সাবউভিউ সহ একটি ট্যাব কন্ট্রোলার রয়েছে যা আমার কাস্টম ক্লাস। আমি কোথায় কোথায় initWithStyle কল রাখতে পারি তা নিশ্চিত নই, আমি টেবিলভিউ সূচনাটি করি না, এটি ট্যাব নিয়ামক দ্বারা সম্পন্ন। টেবিলভিউ কনট্রোলারের মধ্যে ইভিউ স্টাইল পরিবর্তন করা কার্যকর বলে মনে হচ্ছে না।
নেভান রাজা

ডিমিট্রিস যেমন বলেছিলেন, আপনি যদি XIB ব্যবহার না করেন তবে আপনাকে অবশ্যই কোথাও ইউআইটিএবলভিউ নিয়ন্ত্রণকারী চালু করতে হবে । আপনি যেখানে initWithStyle: কলটি ব্যবহার করতে চান সেখানে।
dreW
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.