How can I set a UITableView to grouped style

IosObjective CUitableviewCocoa Touch

Ios Problem Overview


I have a UITableViewController subclass with sections. The sections are showing with the default style (no rounded corners). How can I set the TableView style to grouped in the code? I'm not using Interface Builder for this, so I need something like

[self.tableView setGroupedStyle]

I searched on Stack Overflow, but couldn't come up with an answer.

Ios Solutions


Solution 1 - Ios

You can do the following:

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

Swift 3:

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

Solution 2 - Ios

If i understand what you mean, you have to initialize your controller with that style. Something like:

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

Solution 3 - Ios

I give you my solution, I am working in "XIB mode", here the code of a subclass of a UITableViewController :

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

Solution 4 - Ios

Below code Worked for me, I am also using UITableview class

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

     if (self)
    {
    
     }
    return self;
}

Solution 5 - Ios

If you are inheriting UITableViewController, you can just init tableView again.

Objective C:

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

Swift:

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

Solution 6 - Ios

Setting that is not that hard as mentioned in the question. Actually it's pretty simple. Try this on storyboard.

enter image description here

Solution 7 - Ios

Swift 4+:

let myTableViewController = UITableViewController(style: .grouped)

Solution 8 - Ios

Swift 4

Using Normal TableView

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

Using TPKeyboardAvoidingTableView

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

Solution 9 - Ios

For set grouped style in ui itself:-Select the TableView then change the "style"(in attribute inspector)) from plain to Grouped.

Solution 10 - Ios

You can also do this if you want to use it on a subclass you've already created in a separate swift file (probably not 100% correct but works)

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

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

Now in you appdelegate.swift you can call:

let settingsController = SettingsViewController(style: .Grouped)

Solution 11 - Ios

You can do this with using storyboard/XIB also

  1. Go To storyboard -> Select your viewController -> Select your table
  2. Select the "Style" property in interface-builder
  3. Select the "Grouped"
  4. Done

Solution 12 - Ios

If you have one TableView for more tables, and one of this tables is grouped and the another one plain, than you can simulate the plain style with the function from UITableViewDelegate:

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

Solution 13 - Ios

swift 4

if you don't want use storyboard, this might be help.

you can add table view and set properties in a closure:

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
    }()

then add in subview and set constraints.

Solution 14 - Ios

If you create your UITableView in code, you can do the following:

class SettingsVC: UITableViewController {

    init() {
        if #available(iOS 13.0, *) {
            super.init(style: .insetGrouped)
        } else {
            super.init(nibName: nil, bundle: nil)
        }
     }
    
     @available(*, unavailable)
     required init?(coder aDecoder: NSCoder) {
         fatalError("init(coder:) has not been implemented")
     }
 }

Solution 15 - Ios

You can also try to make the separator line color clear which could give the grouped style effect:

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

Solution 16 - Ios

You can use:

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

Solution 17 - Ios

self.tableView.style = UITableViewStyleGrouped

EDIT:

Had assumed this was a read/write property. In that case, you can either follow Dimitris advice and set the style when you instantiate the controller, or (if you're using a XIB), you can set it via IB.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questionnevan kingView Question on Stackoverflow
Solution 1 - IosLiorView Answer on Stackoverflow
Solution 2 - IosDimitrisView Answer on Stackoverflow
Solution 3 - IosThomas DecauxView Answer on Stackoverflow
Solution 4 - IosGagan JoshiView Answer on Stackoverflow
Solution 5 - IosDZoki019View Answer on Stackoverflow
Solution 6 - IosFangmingView Answer on Stackoverflow
Solution 7 - IosJuan BoeroView Answer on Stackoverflow
Solution 8 - IosMd. Ibrahim HassanView Answer on Stackoverflow
Solution 9 - IosZeeshaView Answer on Stackoverflow
Solution 10 - IosJordi BruinView Answer on Stackoverflow
Solution 11 - IosAnnyView Answer on Stackoverflow
Solution 12 - IosIllya KritView Answer on Stackoverflow
Solution 13 - IosmoraeiView Answer on Stackoverflow
Solution 14 - IosKqtrView Answer on Stackoverflow
Solution 15 - IosMyCSharpCornerView Answer on Stackoverflow
Solution 16 - IosJyoti KumariView Answer on Stackoverflow
Solution 17 - IosdrewhView Answer on Stackoverflow