【问题标题】:UISegmentedControl programmaticallyUISegmentedControl 以编程方式
【发布时间】:2016-06-14 13:14:10
【问题描述】:

我创建了一个 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)

    })


}

【问题讨论】:

  • segmentController 对于动作方法来说不是一个好名字,因为它听起来像是一个属性。请改用segmentChangedAction 之类的东西。考虑在所有操作方法的代码中使用像 Action 这样的后缀。
  • @meaning-matters 感谢您的建议,我会改变

标签: ios swift uiview uiviewcontroller uisegmentedcontrol


【解决方案1】:

更改所选索引后只需调用函数self.segmentController(mySegmentControl)

【讨论】:

  • 谢谢,你是最棒的!
猜你喜欢
  • 2012-04-06
  • 1970-01-01
  • 1970-01-01
  • 2012-07-23
  • 2011-07-13
  • 2012-05-17
  • 1970-01-01
  • 2014-07-20
相关资源
最近更新 更多