2017-09-14 122 views
0

我有一个具有MasterViewController和DetailViewController的UISplitViewController。SplitViewController按钮重叠

在我MasterViewController我加入与分配的目标动作的按钮和它的作品都好......但是:

我希望我的按钮上MasterViewController和DetailViewController之间的边界为中心。 但按钮的一半简单消失..我已经在zPosition中尝试了层等..但它没有工作。

有人能帮我一下吗?

回答

1

您的意思是: 边框线顶部的按钮,将主视图和详细视图分开的权利?

然后,您可以直接从任何主控制器或细节控制器向窗口添加按钮。 (我不知道这是否是最佳的做法虽然)。

这里需要考虑三件事情:

  1. 当你从viewDidLayoutSubviews添加按钮,这将工作()。它不是从viewDidLoad()或viewWillAppear()工作。

  2. 由于该按钮是从viewDidLayoutSubviews()添加的,因此有可能会多次调用此方法,因为多次创建按钮并使较早的按钮实例泄漏。所以你可能会想到为按钮设计一个类实例,加深你对应用程序的设计。

  3. 针对设备旋转时按钮的位置(或状态)采取行动。


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") 
} 
+0

嘿感谢,正常工作,但:在“testButtonTapped”我愿意“pushViewController”,并在接下来的ViewController相同的按钮appears..how可以这样? –

+1

该按钮被添加到窗口,所以它将在整个生命周期中。请根据您的需要更新您的逻辑以相应地处理按钮。 – Rishi

+0

确定感谢您的回答:)还有一件事,当我回到masterviewcontroller时,按钮的限制消失了......为什么?我该如何解决它? –