2017-09-14 184 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時,按鈕的限制消失了......爲什麼?我該如何解決它? –