您的意思是:边界线顶部的按钮将主视图和详细视图分开,对吗?
然后,您可以直接从任何 Master 或 Detail 控制器向窗口添加按钮。(我不确定这是否是最佳实践。)
你需要在这里考虑三件事:
当您从 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")
}