如何在swift 4中将按钮放在表格视图控制器的前面? [复制]

Posted

技术标签:

【中文标题】如何在swift 4中将按钮放在表格视图控制器的前面? [复制]【英文标题】:how to bring button inFront of tableviewController in swift 4? [duplicate] 【发布时间】:2017-12-25 08:54:24 【问题描述】:

我有一个表格视图控制器,对我来说唯一的方法就是使用它,所以请不要告诉我使用 viewController 而不是 tableviewController 这是我添加按钮的代码,这个按钮显示在最后一个单元格中但是我希望当用户滚动表格视图时,按钮位于屏幕底部而不移动

override func viewDidLoad() 
    super.viewDidLoad()


    let submitButton = UIButton(frame: CGRect(x: 5, y: view.frame.origin.y + view.frame.size.height, width: self.view.frame.width - 10 , height: 50))

    submitButton.backgroundColor = UIColor.init(red: 180/255, green: 40/255, blue: 56/255, alpha: 1.0)
    submitButton.setTitle("Submit", for: .normal)
    submitButton.titleLabel?.font = UIFont(name: "Arial", size: 15)
    submitButton.titleLabel?.textColor = .white
    submitButton.addTarget(self, action: #selector(submit), for: .touchUpInside)
    submitButton.layer.cornerRadius = 5
    view.addSubview(submitButton)

【问题讨论】:

将按钮添加为 tableview 部分的页脚可能是一种解决方法。如果您正在尝试,请参考此链接:***.com/questions/38178509/… 这在 tableview 控制器中不起作用我希望按钮在任何情况下都位于屏幕底部但是在此链接中当我运行应用程序时我需要滚动表格视图以查看按钮 那么可以有一种在self.view.window上添加按钮的方法。但是在这种方法中,当视图消失时,您必须删除按钮。 【参考方案1】:

如果它适合您的场景,请尝试这种方法:

var submitButton = UIButton()

override func viewDidLoad() 
    super.viewDidLoad()


    submitButton.frame = CGRect(x: 5, y: view.frame.origin.y + view.frame.size.height, width: self.view.frame.width - 10 , height: 50)

    submitButton.backgroundColor = UIColor.init(red: 180/255, green: 40/255, blue: 56/255, alpha: 1.0)
    submitButton.setTitle("Submit", for: .normal)
    submitButton.titleLabel?.font = UIFont(name: "Arial", size: 15)
    submitButton.titleLabel?.textColor = .white
    submitButton.addTarget(self, action: #selector(submit), for: .touchUpInside)
    submitButton.layer.cornerRadius = 5
    self.view.window?.addSubview(submitButton)

但在这种情况下,您必须从 viewWillDisappear 的超级视图中删除按钮:

override func viewWillDisappear(_ animated: Bool) 
    super.viewWillDisappear(animated)
    self. submitButton.removeFromSuperview()

【讨论】:

【参考方案2】:

试试这个

将按钮声明为变量

   var submitButton:UIButton!

在 viewDidLoad 中

    submitButton = UIButton(frame: CGRect(x: 5, y: UIScreen.main.bounds.size.height - 50 , width: UIScreen.main.bounds.size.width - 10 , height: 50))        
    submitButton.backgroundColor = UIColor.init(red: 180/255, green: 40/255, blue: 56/255, alpha: 1.0)
    submitButton.setTitle("Submit", for: .normal)
    submitButton.titleLabel?.font = UIFont(name: "Arial", size: 15)
    submitButton.titleLabel?.textColor = .white
    submitButton.addTarget(self, action: #selector(submit), for: .touchUpInside)
    submitButton.layer.cornerRadius = 5        
    self.view.addSubview(submitButton)

并实现这个方法

 override func scrollViewDidScroll(_ scrollView: UIScrollView) 

  submitButton.frame = CGRect.init(x: submitButton.frame.origin.x, y:  UIScreen.main.bounds.size.height + scrollView.contentOffset.y - 50 , width: submitButton.frame.width, height: submitButton.frame.height)


【讨论】:

我又得到了同样的结果 在 addSubview 之后添加该行 还是有问题 未显示或什么 没有按钮仍然在表格视图的底部而不是屏幕的底部(用户应该滚动表格视图以查看按钮)但我希望按钮在任何情况下都位于屏幕底部

以上是关于如何在swift 4中将按钮放在表格视图控制器的前面? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iOS 的 swift 中将浮动操作按钮放在 tableView 中?

如何在 Swift 中将绘图保存到 tableview?

在 swift 4 中将数据解析为 vc 始终为零

在 Swift 中将自定义 UITableViewCell 共享到多个 UITableViewController

如何在swift ios中将多个图像添加到自定义表格视图单元格?

在 MVC 中将视图状态之类的选择放在哪里?