मैं समूहबद्ध शैली में UITableView कैसे सेट कर सकता हूं


91

मेरे पास UITableViewControllerवर्गों के साथ एक उपवर्ग है। अनुभाग डिफ़ॉल्ट शैली (कोई गोल कोनों) के साथ दिखाई दे रहे हैं। मैं तालिका दृश्य शैली को कोड में समूहीकृत कैसे कर सकता हूं? मैं इसके लिए इंटरफ़ेस बिल्डर का उपयोग नहीं कर रहा हूं, इसलिए मुझे कुछ ऐसा चाहिए

[self.tableView setGroupedStyle]

मैंने स्टैक ओवरफ्लो पर खोज की, लेकिन एक उत्तर के साथ नहीं आ सका।


स्विफ्ट संस्करण: लिंक
जुआन बोएरो

जवाबों:


108

यदि मैं समझता हूं कि आपका क्या मतलब है, तो आपको उस शैली के साथ अपने नियंत्रक को प्रारंभ करना होगा। कुछ इस तरह:

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

3
जैसा कि कहा गया है कि यह एक संपत्ति नहीं है जिसे बदला जा सकता है। एक समूह हमेशा समूहबद्ध होता है।
कोरी फ्लोयड

यह एक सही उत्तर नहीं है, यह एक UITableViewController उपवर्ग होने की समस्या को हल नहीं कर रहा है। यदि आपको UITableViewController विरासत में मिली है, तो आपको निर्माणकर्ता को एक और UITableView या UITableViewController नहीं बनाना होगा।
मिकेल

यदि यह प्रश्न में कहा गया है, तो आप इसे कैसे करेंगे?
एथन झाओ

132

आप निम्न कार्य कर सकते हैं:

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

स्विफ्ट 3:

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

12
यह वास्तविक समाधान है! धन्यवाद। स्वीकृत उत्तर गलत है, कम से कम OS 3.0+ के लिए
डक

4
कृपया ध्यान दें कि स्वीकृत समाधान में एक टाइपो था। मैंने अभी इसे ठीक किया है। दोनों जवाब मेरे लिए काम करते हैं, लेकिन वे अलग-अलग चीजों को तुरंत करते हैं। यह उत्तर एक है UITableView, स्वीकृत उत्तर है UITableViewController
नवां राजा

3
दरअसल, स्वीकृत उत्तर भ्रामक है। कृपया पढ़ें कि ओपी ने क्या कहा "मेरे पास एक UITableViewConotroller उपवर्ग है"। स्वीकृत उत्तर केवल आपको एक सादा जेन UITableViewController देता है; विवरणों को जाने बिना उपवर्ग के बारे में उपयोगकर्ताओं की समस्या को हल करना असंभव है। यह उत्तर और self.myTable का उपयोग करना शायद बेहतर होगा, IMHO।
फेलोनेस कैट

यह भी iOS8 पर बाधाओं के साथ काम करता है (iOS7 के बारे में नहीं जानता) ... बस CGRectZeroअपने टेबलव्यू शैली के साथ एक फ्रेम के साथ आरंभ करें और फिर अपनी बाधाओं को जोड़ें और आपको अपनी बाधाओं के साथ सही शैली मिलती है।
ग्लेन सेलल

20

मैं आपको अपना समाधान देता हूं, मैं "XIB मोड" में काम कर रहा हूं, यहां UITableViewController के एक उपवर्ग का कोड है:

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

6
इस समाधान के लिए प्रयास करें - यदि यह एनआईबी में एक नेविगेशनकंट्रोलर के अधीन है, तो यह उस संदर्भ को खो देगा और आपको वास्तव में भ्रमित कर देगा।
जेसी मिलीकैन

14

नीचे दिया गया कोड मेरे लिए काम करता है, मैं यूआईटेबलव्यू क्लास का भी उपयोग कर रहा हूं

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

     if (self)
    {

     }
    return self;
}

1
UITableViewController के एक उपवर्ग का उपयोग करने वाले लोगों के लिए यह सही समाधान है। धन्यवाद!
चाड पविल्स्का

11

यदि आपको UITableViewController विरासत में मिली है, तो आप बस तालिका दृश्य को फिर से init कर सकते हैं।

उद्देश्य सी:

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

स्विफ्ट:

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

6

सेट करना उतना कठिन नहीं है जितना कि प्रश्न में बताया गया है। वास्तव में यह बहुत आसान है। स्टोरीबोर्ड पर यह कोशिश करें।

यहाँ छवि विवरण दर्ज करें


यदि आप पहले से ही एक TableViewController के भाग के रूप में एक तालिका दृश्य कर रहे हैं, तो यह इस तरह से सबसे अच्छा है। अन्य उत्तर एक नए टेबल व्यू इत्यादि को त्वरित करने पर अधिक ध्यान केंद्रित करते हैं
कार्तिक कन्नन

3

स्विफ्ट 4

सामान्य तालिका दृश्य का उपयोग करना

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

TPKeyboardAvoidingTableView का उपयोग करना

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


2

Ui में सेट समूहबद्ध शैली के लिए: - TableView का चयन करें फिर "स्टाइल" (विशेषता निरीक्षक में) को सादे से समूह में बदलें।


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

आप स्टोरीबोर्ड / XIB का उपयोग करके भी ऐसा कर सकते हैं

  1. स्टोरीबोर्ड पर जाएं -> अपना दृश्य चुनें नियंत्रक -> अपनी तालिका चुनें
  2. इंटरफ़ेस-बिल्डर में "स्टाइल" संपत्ति का चयन करें
  3. "समूहीकृत" चुनें
  4. किया हुआ

0

यदि आपके पास अधिक तालिकाओं के लिए एक तालिका दृश्य है, और इस तालिका में से एक को समूहीकृत किया गया है और दूसरा एक मैदान है, तो आप UITableViewDelegate से समारोह के साथ सादे शैली का अनुकरण कर सकते हैं:

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

0

तेज ४

यदि आप स्टोरीबोर्ड का उपयोग नहीं करना चाहते हैं, तो यह मदद हो सकती है।

आप एक दृश्य में तालिका दृश्य जोड़ सकते हैं और गुण सेट कर सकते हैं:

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]];

धाराएं इस तरह नहीं टूटेंगी।
brduca


-27
self.tableView.style = UITableViewStyleGrouped

संपादित करें:

मान लिया था कि यह एक पढ़ा / लिखा संपत्ति थी। उस स्थिति में, आप या तो दिमित्रिस सलाह का पालन कर सकते हैं और नियंत्रक को तुरंत इंस्टाल करने पर शैली सेट कर सकते हैं, या (यदि आप एक एक्सआईबी का उपयोग कर रहे हैं), तो आप इसे आईबी के माध्यम से सेट कर सकते हैं।


उत्तर के लिए धन्यवाद। मैं एक XIB का उपयोग नहीं कर रहा हूं, मैं एक उप नियंत्रक के साथ एक टैब नियंत्रक हूं जो मेरा कस्टम वर्ग है। मुझे यकीन नहीं है कि मैं initWithStyle कॉल कहां रख सकता हूं, मैं टेबल व्यू इनिट नहीं कर रहा हूं, यह टैब कंट्रोलर द्वारा किया गया है। InitWithStyle को TableViewController में बदलने से काम नहीं लगता है।
नीवन राजा

जैसा कि डिमिट्रिस ने कहा, यदि आप XIB का उपयोग नहीं कर रहे हैं, तो आपको कहीं न कहीं UITableViewController init'ing होना चाहिए । यहीं आप initWithStyle: call का उपयोग करना चाहते हैं।
15
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.