有没有办法在Interface Builder中的UISegmentedControl中设置起始选定的段,或者我是否必须在代码中执行此操作?如果它在代码中,viewDidLoad是设置它的最佳位置吗?
答案 0 :(得分:39)
从代码中,您可以self.segmentedControl.selectedSegmentIndex = someDefaultIndex
。
是否应在viewDidLoad:
中设置它完全取决于应用程序的结构。例如,如果您的应用程序第一次启动并加载视图,并且需要将控件设置为它在上一次运行应用程序期间所具有的值,那么在那里执行它肯定是有意义的。
答案 1 :(得分:15)
在界面生成器中,当您在UI上选择UISegmentedControl对象时,在属性窗格中,在段控件中有段下拉菜单,选择要选择的段(0,1等等)并勾选“已选中”选项低于它。
答案 2 :(得分:1)
通过 storyBoard 为 UISegmentedControl 选择默认值
答案 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。选择它,它将是默认值。