2017-09-14 20 views
0

MasterViewController 및 DetailViewController가있는 UISplitViewController가 있습니다. 내 MasterViewController에서SplitViewController 버튼 겹침

나는 할당 된 목표 행동에 버튼을 추가하고 그것은 모든 선한 일 :하지만 ...

은 내 버튼을 MasterViewController와 DetailViewController의 경계를 중심으로되고 싶어요. 그러나 버튼의 절반은 단순히 사라집니다. 이미 레이어 등에서 zPosition을 실험했습니다.하지만 작동하지 않았습니다.

아무도 나를 도와 줄 수 없나요?

답변

1

다음을 의미합니다. 마스터보기와 상세보기를 구분하는 경계선 맨 위에있는 단추는 무엇입니까?

그런 다음 마스터 또는 세부 컨트롤러 중 하나에서 직접 단추를 창에 추가 할 수 있습니다. (이 그래도 가장 좋은 방법인지 잘 모르겠습니다.) 당신은 여기에 세 가지를 고려할 필요가

:

  1. 당신이 viewDidLayoutSubviews에서 버튼을 추가 할 때 작동합니다(). viewDidLoad() 또는 viewWillAppear()에서 작동하지 않습니다.

  2. button이 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

이 감사하지만 기대 작품으로 봐 : 난 "과 pushViewController"할 "testButtonTapped"과 같은 버튼 appears..how의 ViewController 다음이 될 수에서? –

+1

버튼이 창에 추가되었으므로 전체 라이프 사이클 동안 버튼이 나타납니다. 필요에 따라 버튼을 처리하기 위해 논리를 업데이트하십시오. – Rishi

+0

확인 해 주셔서 감사합니다. :) 한 가지 더, masterviewcontroller에 다시 팝업되면 버튼에 대한 제약이 사라졌습니다 ... 왜? 어떻게 해결할 수 있습니까? –