意味: マスタービューと詳細表示を分ける境界線の上にあるボタンは右ですか?
次に、マスターまたは詳細コントローラのいずれかから直接ウィンドウにボタンを追加できます。 (これはしかし、ベストプラクティスであるかどうかを確認していない。)あなたはここに3つのことを考慮する必要があり
:
あなたは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に戻ってポップボタンの制約がなくなっている...なぜですか?どのように私はそれを解決することができますか? –