2017-09-13 78 views
1

目前有一個UITableViewContoller與許多部分和行。如何在UITableViewController中添加浮動按鈕,該按鈕在滾動表格時不滾動?

什麼是最好的方法來添加一個浮動在表視圖頂部的按鈕。滾動單元格時此按鈕不應滾動。

目前我有下面的代碼,並與此按鈕仍然滾動:

override func viewDidLoad() { 
    super.viewDidLoad() 
    self.view.addSubview(viewForFooter) 
} 

viewForFooter是含有需要被浮置按鈕的單獨視圖。謝謝。任何幫助將不勝感激。

+0

你想要一個按鈕「覆蓋」在你的表視圖?所以當你滾動行時,它們部分隱藏在按鈕後面?或者你想讓按鈕位於桌面底部的「頁腳視圖」中? – DonMag

+0

@DonMag我想在我的表格視圖上實現「over-lay」版本。細胞部分隱藏在按鈕後面的位置。由於項目的某些要求,我無法使用ViewController並添加一個按鈕作爲tableView的同級視圖。 –

+0

只是好奇...你給我的答案試試嗎? – DonMag

回答

0

最簡單的方法是使用的viewController將包含的tableView作爲一個子視圖,然後您可以添加浮動按鈕的的viewController

+0

由於我的項目需求,我不想使用普通的ViewController。我知道這個解決方案,'UITableView'和'UIButton'是作爲UIViewController的兄弟添加的。對於這個需求,我需要在你的解決方案的'UITableViewController' –

2

下面一個子視圖是,如果你真的不想要的選項使用一個UIView子視圖與...

override func viewDidLoad() { 
    super.viewDidLoad() 

    if let app = UIApplication.shared.delegate as? AppDelegate, let window = app.window { 
     print("adding view-with-button to keyWindow") 
     window.addSubview(viewForFooter) 
     viewForFooter.topAnchor.constraint(equalTo: window.topAnchor, constant: 120).isActive = true 
     viewForFooter.leftAnchor.constraint(equalTo: window.leftAnchor, constant: 40).isActive = true 
    } 

    // other stuff... 
} 

這將在40,120添加視圖作爲「keyWindow」的子視圖,並將「懸停」那裏,而你滾動表。我假設您的viewForFooter已正確實例化,並且您具有正確設置的必要約束。

0
override func viewWillAppear(_ animated: Bool) { 
     self.btnPickup = UIButton() 
     self.btnPickup?.frame = CGRect(x: self.view.frame.size.width - 75, y: self.view.frame.size.height - 150, width: 50, height: 50) 
//  self.btnPickup?.setTitle("+", for: .normal) 
     self.btnPickup?.setBackgroundImage(#imageLiteral(resourceName: "add_user"), for: .normal) 
     self.btnPickup?.titleLabel?.textAlignment = .center 
     self.btnPickup?.titleLabel?.font = UIFont(name: (self.btnPickup?.titleLabel?.font.fontName)!, size: 50) 
//  self.btnPickup?.layer.borderColor = UIColor.black.cgColor 
     self.btnPickup?.backgroundColor = UIColor.white 
//  self.btnPickup?.layer.borderWidth = 1 
     self.btnPickup?.layer.cornerRadius = 25 
     self.btnPickup?.clipsToBounds = true 

//  self.btnPickup?.setTitleColor(UIColor.white, for: .normal) 
     self.btnPickup?.addTarget(self, action: #selector(DirectoryViewController.btnTapped(sender:)), for: .touchUpInside) 

     print(self.navigationController?.view.subviews.count ?? "error") 
     self.navigationController?.view.superview?.insertSubview(self.btnPickup!, at: (self.navigationController?.view.subviews.count)!) 
    } 

    override func viewWillDisappear(_ animated: Bool) { 
     self.btnPickup?.removeFromSuperview() 
    } 
0

我有這個問題。我使用界面生成器 和自動佈局來放置它,它不是像我的同事建議的編程解決方案:

該按鈕必須放置在與UITableView相同的級別。請注意將它放在層次結構中的位置,如下所示:它不能低於層次結構中的表視圖。

enter image description here

+0

之上實現它,'Home'是一種'UIViewController'類型。我知道在'UIViewController'的情況下,如何通過將'UIButton'作爲父'UIView'中'UITableView'的兄弟來實現浮動。不過,我正在尋找的解決方案是使用「UITableViewController」。感謝您的答覆。 –

+0

好吧,在故事板中,如果你檢查Home是什麼......它是一個ViewController,你從右下角的對象庫中拖動。我正在尋找從該對象庫拖動的TableViewController。不爭論,只是澄清我在找什麼。 –

+0

我完全理解。但一種觀點是一種觀點。如果你想要一個按鈕(這是一個視圖)懸停在UITableView或UIViewController上,它就是一樣的。 –