2016-06-14 2 views
1

나는 포함의 ViewController를 만든 UISegmentedControl . 나는 시도했다 :프로그래밍

if let previousSelection = NSUserDefaults.standardUserDefaults().stringForKey("SEGMENT_CONTROL") { 
     segmentSaved = Int(previousSelection)! 
    } 

    if (segmentSaved == 0) { 
     mySegmentControl.selectedSegmentIndex = segmentSaved 
    } else if (segmentSaved == 1) { 
     mySegmentControl.selectedSegmentIndex = segmentSaved 
    } else if (segmentSaved == 2) { 
     mySegmentControl.selectedSegmentIndex = segmentSaved 
    } else { 
     print("Error") 
    } 

메모리에서 int를 취하고 UISegmentedControl의 인덱스로 사용합니다. 그것은 작동하지만 컨테이너에서보기를 변경하지는 않습니다.

컨테이너를 변경하려면 어떻게해야합니까?

이 어떻게 작동하는지입니다 : 선택한 인덱스를 변경 한 후

let viewControllerIdentifiers = ["ViewController1", "ViewController2", "ViewController3"] 

@IBAction func segmentController(sender: UISegmentedControl) { 

    let newController = (storyboard?.instantiateViewControllerWithIdentifier(viewControllerIdentifiers[sender.selectedSegmentIndex]))! as UIViewController 
    let oldController = childViewControllers.last! as UIViewController 

    oldController.willMoveToParentViewController(nil) 
    addChildViewController(newController) 
    newController.view.frame = oldController.view.frame 

    transitionFromViewController(oldController, toViewController: newController, duration: 0.25, options: .TransitionCrossDissolve, animations:{() -> Void in 
     }, completion: { (finished) -> Void in 
      oldController.removeFromParentViewController() 
      newController.didMoveToParentViewController(self) 

    }) 


} 
+1

'segmentController'는 속성 인 것처럼 들리기 때문에 액션 메소드의 이름이 아닙니다. 대신에'segmentChangedAction'과 같은 것을 사용하십시오. 모든 액션 메소드에 대해 코드 전체에서'Action'과 같은 후위를 사용하는 것을 고려하십시오. –

+0

@ 의논 - 조언을 주셔서 감사합니다. 나는 바꿀 것입니다. – Jigen

답변

2

그냥 기능 self.segmentController(mySegmentControl) 호출합니다.

+0

고마워, 너 최고야! – Jigen