UITableViewController
セクションを持つサブクラスがあります。セクションはデフォルトのスタイルで表示されています(角が丸くない)。TableViewスタイルをコードでグループ化する方法を教えてください。私はこれにInterface Builderを使用していないので、次のようなものが必要です
[self.tableView setGroupedStyle]
Stack Overflowで検索しましたが、答えが見つかりませんでした。
回答:
私があなたの意味を理解している場合、そのスタイルでコントローラーを初期化する必要があります。何かのようなもの:
myTVContoller = [[UITableViewController alloc] initWithStyle:UITableViewStyleGrouped];
次のことができます。
UITableView *myTable = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStyleGrouped];
スウィフト3:
let tableView = UITableView.init(frame: CGRect.zero, style: .grouped)
UITableView
、受け入れられた答えはUITableViewController
です。
CGRectZero
テーブルビュースタイルに沿ってのフレームで初期化し、制約を追加すると、制約とともに適切なスタイルが得られます。
以下のコードは私のために働きました、私はUITableviewクラスも使用しています
- (id)initWithStyle:(UITableViewStyle)style
{
self = [super initWithStyle:UITableViewStyleGrouped];
if (self)
{
}
return self;
}
別のSwiftファイルで既に作成したサブクラスで使用する場合も、これを行うことができます(おそらく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)
迅速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
}()
次に、サブビューを追加して制約を設定します。
グループ化されたスタイルの効果が得られるように、区切り線の色を明確にすることもできます。
[myTVContoller.tableView setSeparatorColor:[UIColor clearColor]];
self.tableView.style = UITableViewStyleGrouped
編集:
これは読み取り/書き込みプロパティであると想定していました。その場合、コントローラーをインスタンス化するときにDimitrisのアドバイスに従ってスタイルを設定するか、または(XIBを使用している場合)IBを介して設定することができます。