2017-09-14 8 views
0

私はMasterViewControllerとDetailViewControllerを持つUISplitViewControllerを持っています。SplitViewControllerボタンオーバーラップ

私は私のボタンをMasterViewControllerとDetailViewControllerの境界を中心にしたい:私は割り当てられ、それはすべての良い働きターゲットアクションとボタンを追加...しかし、私のいMasterViewControllerで

。 しかし、ボタンの半分は単に消えます..私はすでにレイヤーなどのzPositionで実験しましたが、それは動作しませんでした。

ここで誰か助けてくれますか?

答えて

1

意味: マスタービューと詳細表示を分ける境界線の上にあるボタンは右ですか?

次に、マスターまたは詳細コントローラのいずれかから直接ウィンドウにボタンを追加できます。 (これはしかし、ベストプラクティスであるかどうかを確認していない。)あなたはここに3つのことを考慮する必要があり

  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に戻ってポップボタンの制約がなくなっている...なぜですか?どのように私はそれを解決することができますか? –

関連する問題