您的意思是: 边框线顶部的按钮,将主视图和详细视图分开的权利?
然后,您可以直接从任何主控制器或细节控制器向窗口添加按钮。 (我不知道这是否是最佳的做法虽然)。
这里需要考虑三件事情:
当你从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时,按钮的限制消失了......为什么?我该如何解决它? –