Я пытаюсь создать подкласс UITableViewController и выполнить пользовательскую настройку вида с помощью переопределенного метода контроллера loadView()
.Я делаю это, потому что мне нужно balanceView
в верхней части представления таблицы и кнопка с плавающим кругом внизу.Я делаю такие вещи, потому что позже мне понадобится этот «базовый» контроллер для группы разных его подклассов, у них всех должны быть эти два представления, но у них будут совершенно разные tableView.Все загружается правильно, но свойство tableView
равно nil в viewDidLoad
и viewDidAppear
, но методы источника данных tableViews и делегата вызываются успешно!Что я делаю не так?(Может быть, мне нужно вместо этого создать подкласс UIViewController
?) Вот мой код:
Это мой подкласс UITableViewController loadView:
override func loadView() {
super.loadView()
let bView = UIView()
balanceView = BalanceViewSwift()
balanceView.translatesAutoresizingMaskIntoConstraints = false
bView.addSubview(balanceView)
tableView = UITableView(frame: .zero, style: .plain)
tableView.translatesAutoresizingMaskIntoConstraints = false
bView.addSubview(tableView)
balanceView.addAnchorToSuperview(anchor: .top, margin: 0)
.addAnchorToSuperview(anchor: .leading, margin: 0)
.addAnchorToSuperview(anchor: .trailing, margin: 0).end()
tableView.addAnchorToSuperview(anchor: .bottom, margin: 0)
.addAnchorToSuperview(anchor: .leading, margin: 0)
.addAnchorToSuperview(anchor: .trailing, margin: 0).end()
balanceView.bottomAnchor.constraint(equalTo: tableView.topAnchor).isActive = true
addButtonView = CircleButton()
addButtonView.translatesAutoresizingMaskIntoConstraints = false
addButtonView.backgroundColor = .red
addButtonView.tintColor = .white
addButtonView.setTitle("+", for: .normal)
addButtonView.addTarget(self, action: #selector(BalanceTableViewController.addButtonTapped(_:)), for: .touchUpInside)
bView.addSubview(addButtonView)
addButtonView.addAnchorToSuperview(anchor: .bottom, margin: 16).addAnchorToSuperview(anchor: .trailing, margin: 16).end()
addButtonView.heightAnchor.constraint(equalTo: addButtonView.widthAnchor).isActive = true
addButtonView.widthAnchor.constraint(equalToConstant: 50).isActive = true
tableView.delegate = self
tableView.dataSource = self
balanceView.addFundsButtonIsHidden = !balanceViewAddFundsButtonIsVisible
addButtonView.isHidden = !circleBottomAddButtonIsVisible
view = bView
}