1
我已經創建了一個包含一個視圖控制器:UISegmentedControl編程
- 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)
})
}
'segmentController'不是行爲方法的好名字,因爲它聽起來像是一個屬性。改用「segmentChangedAction」之類的東西。考慮在整個代碼中對所有操作方法使用類似「Action」的後綴。 –
@意義事項感謝您的意見,我會改變 – Jigen