Как показать UITableView ниже UITextField, используя swift программно? - PullRequest
2 голосов
/ 07 февраля 2020

Итак, у меня есть UITextField, и я хочу показать UITableView чуть ниже. Я пытаюсь показать предложения в UITableView мой лог c работает нормально, но я хочу знать, как я могу показать UITableView под UITextField.

В настоящее время я делать что-то вроде этого

 private func setUpAutoCompleteTable() {
        autocompleteTableView = UITableView(frame: CGRect(x: self.originTextField.bounds.minX,y: self.originTextField.bounds.maxY,width: self.originTextField.bounds.width,height: self.originTextField.bounds.height * 4), style: UITableView.Style.plain)
        self.view.addSubview(autocompleteTableView)

        autocompleteTableView.delegate = self
        autocompleteTableView.dataSource = self
        autocompleteTableView.isScrollEnabled = true
        autocompleteTableView.isHidden = true
        autocompleteTableView.register(LocationAutoCompleteCell.self, forCellReuseIdentifier: "AutoCompleteRowIdentifier")
    }

Но это показывает таблицу в верхней части экрана. Я хочу сказать, что originTextField находится внутри другого представления.

ОБНОВЛЕНИЕ

Так выглядит иерархия представления.

Ответы [ 2 ]

0 голосов
/ 07 февраля 2020

Вероятно, вам следует go ответить на вопрос Гейба с подробностями, учитывая, что текстовое поле находится внутри другого представления.

Итак, вам нужно получить нижнюю привязку текстового поля от раскадровки. Вы можете сделать это, перетащив ограничение в ваш файл swift.

Затем вы можете сделать это:

autoCompleteTableView.topAnchor.constraint(equalTo: self.textFieldBottomAnchorReference, constant: 5)
0 голосов
/ 07 февраля 2020

Итак, чтобы создать макет tableView программным способом, вам нужно объявить его в ViewController

var autoCompleteTableView: UITableView!

Инициализировать его в ViewDidLoad

autoCompleteTableView = UITableView(frame: .zero) // constraints will set the frame for us later

установить ограничения в ViewDidLoad

NSLayoutConstraint.activate([
    autoCompleteTableView.topAnchor.constraint(equalTo: textField.bottomAnchor, constant: 5), //the constant is how many pts below the textField you want the tableView to be
    autoCompleteTableView.centerXAnchor.constraint(equalTo: view.centerXAnchor),
    autoCompleteTableView.widthAnchor.constraint(equalTo: view.widthAnchor),
    autoCompleteTableView.bottomAnchor.constraint(equalTo: view.bottomAnchor),
])

и затем вы можете установить любые свойства tableView, которые вам нужны. помните, ваш V C также должен реализовывать UITableViewDelegate и UITableViewDataSource

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...