2009-06-17 12 views
68

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

[self.tableView setGroupedStyle] 

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

+0

स्विफ्ट संस्करण: [लिंक] (http://stackoverflow.com/a/35662019/1634890) –

उत्तर

87

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

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

जैसा कि कहा गया है कि यह ऐसी संपत्ति नहीं है जिसे बदला जा सकता है। एक समूह हमेशा समूहित। –

+0

यह सही उत्तर नहीं है, यह UITableViewController उपclass होने की समस्या को हल नहीं कर रहा है। यदि आप UITableViewController का उत्तराधिकारी हैं, तो आपको कन्स्ट्रक्टर को ओवरराइड करना होगा, एक और UITableView या UITableViewController नहीं बनाएं। – Mikael

-23
self.tableView.style = UITableViewStyleGrouped 

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

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

+0

संकलक शिकायत है कि यह एक केवल पढ़ने के लिए संपत्ति है। –

+0

उत्तर के लिए धन्यवाद। मैं एक एक्सआईबी का उपयोग नहीं कर रहा हूं, मेरे पास एक सबव्यूव के साथ एक टैब नियंत्रक है जो मेरी कस्टम कक्षा है। यह सुनिश्चित नहीं है कि मैं initWithStyle कॉल कहां रख सकता हूं, मैं TableView init को नहीं समझता, यह टैब नियंत्रक द्वारा किया जाता है। TableViewController में initWithStyle को बदलना काम नहीं कर रहा है। –

+0

जैसा कि dimitris ने कहा, यदि आप XIB का उपयोग नहीं कर रहे हैं, तो आपको UITableViewController * कहीं और * init'ing होना चाहिए। यही वह जगह है जहां आप initWithStyle का उपयोग करना चाहते हैं: कॉल करें। – drewh

112

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

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

स्विफ्ट 3:

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

यह असली समाधान है! धन्यवाद। स्वीकार किया गया जवाब गलत है, कम से कम ओएस 3.0+ – SpaceDog

+3

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

+0

@ डिजिटल रोबोट: स्वीकृत उत्तर गलत नहीं है। – ColdLogic

-3

तुम भी विभाजक रेखा का रंग साफ करने के लिए प्रयास कर सकते हैं जो वर्गीकृत किया शैली दे सकता है प्रभाव:

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

अनुभाग इस तरह से पतन नहीं होंगे। – Brduca

19

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

(instancetype)init { 
return [[YourSubclassOfTableView alloc] initWithStyle:UITableViewStyleGrouped]; 
} 
+5

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

+0

शानदार जवाब। – Fattie

-11

आप उपयोग कर सकते हैं मैं भी UITableView वर्ग

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

    if (self) 
    { 

    } 
    return self; 
} 
+0

यह एक त्रुटि "केवल पढ़ने योग्य संपत्ति के लिए असाइनमेंट" दिखाई देता है –

10

मेरे लिए काम किया कोड नीचे:

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

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

2

उपयोग कर रहा हूँ सेट वर्गीकृत किया शैली के लिए ui अपने आप में: का चयन करें tableview तो "शैली" सादे से समूहीकृत करने के लिए बदल) (विशेषता निरीक्षक में)।

0

स्विफ्ट 2.1:

let myTableViewController = UITableViewController(style: UITableViewStyle.Grouped) 
1

आप भी इस आप एक उपवर्ग आप पहले से ही एक अलग तेज फ़ाइल में बनाया है पर इसका उपयोग करना चाहते (शायद नहीं 100% सही लेकिन काम करता है) करता है, तो कर सकते हैं

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

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

अब आप में अपरिवर्तनीय है।तेजी से आप कॉल कर सकते हैं:

let settingsController = SettingsViewController(style: .Grouped) 
0

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

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

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

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

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

enter image description here

2

आप UITableViewController इनहेरिट रहे हैं, तो आप सिर्फ tableView फिर से init कर सकते हैं।

उद्देश्य सी:

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

स्विफ्ट 4:

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

स्विफ्ट 4

सामान्य tableview

let tableView = TableView(frame: .zero, style: .grouped) 
का उपयोग करना

TPKeyboardAvoidingTableView

का उपयोग
let tableView = TPKeyboardAvoidingTableView(frame: .zero, style: .grouped) 
संबंधित मुद्दे