Как добавить плавающую UIButton в контроллер табличного представления в Xcode? - PullRequest
0 голосов
/ 07 октября 2019

Я пытаюсь добавить кнопку «Закрыть» на страницу контроллера табличного представления, которая отображается через всплывающее окно. Я просто хочу, чтобы кнопка x (закрыть) оставалась в верхнем левом углу, когда пользователь прокручивает страницу вниз. Я нашел код для добавления кнопки плавающего действия, используя cocoapods, но это не то, что я хочу. Любая помощь была бы полезна.

Я пытался добавить UIView вне табличного представления, чтобы я мог ограничить кнопку этим, но табличные представления не позволяют вам добавлять UIViews вне него.

Ответы [ 2 ]

0 голосов
/ 07 октября 2019

Если вы встраиваете UIButton в UIView, то вы можете использовать UITableVIewController.

Вот урезанный код одного из моих экземпляров UITableViewController. Есть UITableView, и внизу страницы есть UIView с UIButton на нем:

class ViewController : UITableViewController
{
    @IBOutlet private weak var floatingView: UIView!

    override func viewDidLoad()
    {
        super.viewDidLoad()

        self.initSaveView()
    }

    override func viewWillLayoutSubviews()
    {
        super.viewWillLayoutSubviews()

        self.tableView.bringSubviewToFront(self.floatingView)
    }

    fileprivate func initSaveView()
    {
        self.tableView.contentInset = UIEdgeInsets(top: 0.0, left: 0.0, bottom: self.floatingView.frame.height, right: 0.0)
        self.tableView.scrollIndicatorInsets = UIEdgeInsets(top: 0.0, left: 0.0, bottom: self.floatingView.frame.height, right: 0.0)

        self.floatingView.frame.origin.y = self.tableView.bounds.origin.y + self.tableView.frame.height - floatingView.frame.height
        self.floatingView.autoresizingMask = .flexibleTopMargin
        self.view.addSubview(self.floatingView)
    }
}

extension ViewController
{
    override func scrollViewDidScroll(_ scrollView: UIScrollView)
    {
        floatingView.frame = CGRect(x: self.floatingView.frame.origin.x, y: self.tableView.bounds.origin.y + self.tableView.frame.height - floatingView.frame.height, width: self.floatingView.frame.size.width, height: self.floatingView.frame.size.height)
    }
}

Надеюсь, это поможет вам начать. floatingView был добавлен с помощью Interface Builder (просто перетащите UIView в верхнюю часть панели UITableViewController, затем добавьте свой выход).

0 голосов
/ 07 октября 2019

Вы не можете добавить плавающую кнопку UIB к UITableViewController, но у вас есть три других варианта:

  1. Измените UITableViewController на UIViewController и добавьте UITableView и UIButton для просмотраконтроллер
  2. Создайте контейнер UIViewController и добавьте UITableViewController в качестве встроенного контроллера дочернего представления. Затем вы можете добавить UIButton к контейнеру
  3. Добавить UIButton к UINavigationController, но это будет работать, только если у вас есть навигационный контроллер :) также, при этом подходе вам нужно удалить кнопку вручную, когдаВы закрываете свой контроллер представления таблицы.
...