如何设置UISegmentedControl的默认状态?

时间:2009-06-22 14:08:31

标签: objective-c iphone cocoa-touch interface-builder

有没有办法在Interface Builder中的UISegmentedControl中设置起始选定的段,或者我是否必须在代码中执行此操作?如果它在代码中,viewDidLoad是设置它的最佳位置吗?

5 个答案:

答案 0 :(得分:39)

从代码中,您可以self.segmentedControl.selectedSegmentIndex = someDefaultIndex

是否应在viewDidLoad:中设置它完全取决于应用程序的结构。例如,如果您的应用程序第一次启动并加载视图,并且需要将控件设置为它在上一次运行应用程序期间所具有的值,那么在那里执行它肯定是有意义的。

答案 1 :(得分:15)

在界面生成器中,当您在UI上选择UISegmentedControl对象时,在属性窗格中,在段控件中有段下拉菜单,选择要选择的段(0,1等等)并勾选“已选中”选项低于它。

答案 2 :(得分:1)

通过 storyBoard 为 UISegmentedControl 选择默认值

  1. 打开你的故事板并选择 UISegmentedControl

enter image description here

  1. 选择 UISegmentedControl 的属性检查器(在右上角)

enter image description here

  1. 搜索“细分”属性并打开下拉菜单。

enter image description here

  1. 选择您要默认选择的项目。

enter image description here

  1. 标记选中的复选框以设置默认选中。

enter image description here

答案 3 :(得分:0)

如果您不使用故事板并希望在像我这样的某些设置/网络之后设置默认索引,那么这个小片段会在用户没有的情况下选择一些内容。我把它放在UISegmentedControl的子类中,但你可以放在任何地方。 ( Swift 3

Decl: var UISegmentedControlNoSegment: Int { get }
Desc: A segment index value indicating that there is no selected segment. See selectedSegmentIndex for further information.

简短版:

if selectedSegmentIndex == UISegmentedControlNoSegment {
    selectedSegmentIndex = initialIndex
}

更长版本

func reloadData() {
    guard let numberOfItems = dataSource?.numberOfItems() else {
        return
    }

    removeAllSegments()

    for index in 0...numberOfItems {
        insertSegment(with: $image, at: index, animated: false)
    }

    if selectedSegmentIndex == UISegmentedControlNoSegment {
        selectedSegmentIndex = initialIndex
    }
}

答案 4 :(得分:0)

单击“分段控制”后,转到创建分段的位置,然后选择要默认的分段。然后在它下面会有一个带有“Selected”的Box。选择它,它将是默认值。