您的意思是: 邊框線頂部的按鈕,將主視圖和詳細視圖分開的權利?
然後,您可以直接從任何主控制器或細節控制器向窗口添加按鈕。 (我不知道這是否是最佳的做法雖然)。
這裏需要考慮三件事情:
當你從viewDidLayoutSubviews添加按鈕,這將工作()。它不是從viewDidLoad()或viewWillAppear()工作。
由於該按鈕是從viewDidLayoutSubviews()添加的,因此有可能會多次調用此方法,因爲多次創建按鈕並使較早的按鈕實例泄漏。所以你可能會想到爲按鈕設計一個類實例,加深你對應用程序的設計。
針對設備旋轉時按鈕的位置(或狀態)採取行動。
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
/// Have a precise logic to centre it
let rect = CGRect(x: 270, y: 200, width: 100, height: 30)
let button = UIButton(frame: rect)
button.setTitle("Test Button", for: .normal)
button.backgroundColor = UIColor.red
button.addTarget(self, action: #selector(MasterViewController.testButtonTapped(sender:)), for: .touchUpInside)
let window = self.view.window
window?.addSubview(button)
window?.bringSubview(toFront: button)
}
func testButtonTapped(sender: UIButton) {
debugPrint("Test button tapped")
}
嘿感謝,正常工作,但:在「testButtonTapped」我願意「pushViewController」,並在接下來的ViewController相同的按鈕appears..how可以這樣? –
該按鈕被添加到窗口,所以它將在整個生命週期中。請根據您的需要更新您的邏輯以相應地處理按鈕。 – Rishi
確定感謝您的回答:)還有一件事,當我回到masterviewcontroller時,按鈕的限制消失了......爲什麼?我該如何解決它? –