2017-04-20 6 views
0

하위 컨트롤을 세그먼트 컨트롤에서 전환하고 싶습니다.subviewController 전환 세그먼트 화 된 컨트롤을 사용

스토리 보드에는 vc1과 vc2가 있으며, 메인 VC의 탐색 컨트롤러 바에 세그먼트 컨트롤이 있습니다.

주 vc에서 vc1과 vc2를 추가하고 싶습니다. 어떻게 서브 컨트롤러를 전환할까요? 세그먼트 컨트롤러를 사용합니까?

enter image description here

어떻게 그와 함께 할까?

+0

여기에서 탭바 컨트롤러 –

+0

@ Anbu.Karthik에 가야합니다. 하위보기 컨트롤러를 사용하여이를 수행 할 수 있습니까? –

+0

@qg_java'Containerview'를 사용하여이 튜토리얼을 정확히 확인하십시오. https://spin.atomicobject.com/2015/09/02/switch-container-views/ 또는 https : // cocoacast를 찾으십시오. co.kr/manage-view-controllers-with-container-view-controllers/ –

답변

2

아래 단계를 따르십시오.

  1. VC2를 mainVC의 childVC로 추가하십시오. VC1 & VC2를 mainVC의 childVC로 추가하십시오.

    세그먼트
  2. 1 개 선택 세그먼트 VC1.view.hidden = false & vc2.view.hidden = true

  3. VC2.view.hidden = false & vc1.view.hidden = true

이 기준을 가지고 2 선택

  1. How-to-add-childVC

  2. How-tobind-segment-control-action

코드 작업

@IBAction func indexChanged(_ sender: AnyObject) { 
    switch segmentedControl.selectedSegmentIndex 
    { 
    case 0: 
     vc1.view.hidden = false 
     vc2.view.hidden = true 
    case 1: 
     vc2.view.hidden = false 
     vc1.view.hidden = true 
    default: 
     break 
    } 
} 
+0

자세한 내용은 abuot를 설명 할 수 있습니까? 내 친구. –

+0

업데이트 된 담당자를 확인하십시오. –

0

당신은 VC를 추가한다 메인의 ViewController에 vc.view :

당신이 세그먼트 컨트롤을 선택 아래와 같이 하위보기 제어기의보기를 숨길 수 있습니다 :

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 

    UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; 
    _vc1 = [sb instantiateViewControllerWithIdentifier:@"ViewController1"]; 
    _vc2 = [sb instantiateViewControllerWithIdentifier:@"ViewController2"]; 

    [self addChildViewController:_vc1]; 
    [self addChildViewController:_vc2]; 
    [self.view addSubview:_vc1.view]; 
    [self.view addSubview:_vc2.view]; 

} 


- (void)didReceiveMemoryWarning { 
    [super didReceiveMemoryWarning]; 
    // Dispose of any resources that can be recreated. 
} 
- (IBAction)segAction:(UISegmentedControl *)sender { 

    if (1 == sender.selectedSegmentIndex) { 
     NSLog(@"1"); 

     _vc1.view.hidden = YES; 
     _vc2.view.hidden = NO; 
    }else { 
     NSLog(@"%ld", sender.selectedSegmentIndex); 
     _vc2.view.hidden = YES; 
     _vc1.view.hidden = NO; 
    } 

} 
0

대답은 분명 정확하지만 UISegmentedControl의 각 탭에 컨테이너보기를 사용하는 것이 좋습니다. 이렇게하면 각 뷰와 관련된 로직이 다른 뷰 컨트롤러에서 분리됩니다. 당신은 그런 식으로이를 달성 할 수 있습니다 당신이 FirstViewController 또는 SecondViewController의 속성에 액세스하려는 경우, 당신은 prepare(for segue: UIStoryboardSegue, sender: Any?) 방법을 구현할 수

enter image description here

class TopViewController: UIViewController { 

    @IBOutlet weak var firstContainerView: UIView! 
    @IBOutlet weak var secondContainerView: UIView! 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     firstContainerView.alpha = 1.0 
     secondContainerView.alpha = 0.0 
    } 

    @IBAction func didChangeIndex(_ sender: UISegmentedControl) { 
     switch sender.selectedSegmentIndex { 
     case 0: 
      firstContainerView.alpha = 1.0 
      secondContainerView.alpha = 0.0 
     case 1: 
      firstContainerView.alpha = 0.0 
      secondContainerView.alpha = 1.0 
     default: 
      break 
     } 
    } 
} 

.