我已经像这样进行了段控制...
2。我像这样制作了一个名为Enums.swift
的课程...
import UIKit
enum HomeOptions: String, RawRepresentable {
case ViewAll, News, Articles, Post, Offers
var title: String {
switch self {
case .ViewAll:
return "View All"
case .News:
return "News"
case .Articles:
return "Articles"
case .Post:
return "Post"
case .Offers:
return "Offers"
}
}
}
3。在viewController的viewDidLoad
中,我添加了以下几行。
homeSegment.selectedSegmentIndex = 0
homeSegment.setTitle(HomeOptions.ViewAll.title, forSegmentAt: 0)
homeSegment.setTitle(HomeOptions.News.title, forSegmentAt: 1)
homeSegment.setTitle(HomeOptions.Articles.title, forSegmentAt: 2)
homeSegment.setTitle(HomeOptions.Post.title, forSegmentAt: 3)
homeSegment.setTitle(HomeOptions.Offers.title, forSegmentAt: 4)
现在这些代码行在各个段中设置了适当的名称。
但是我担心的是这个。
如果需要在应用程序的其他位置添加具有3个细分和不同细分选项的另一个细分控件,那么我不想在该视图中拖动另一个细分控件并再次重复上述代码/过程。但是相反,我只想在应用程序中的某个位置添加/拖动段控件一次,并在枚举中包含(段控件的)其他选项,并在必要时使用它们。我能做到吗?
答案 0 :(得分:0)
您可以使用它, 请注意,添加标题时将使用您发送选项的顺序。
func getSegmentControl(with options: [HomeOptions]) -> UISegmentedControl{
let segmentControl = UISegmentedControl.init()
for i in 0..<options.count {
segmentControl.setTitle(option.title, forSegmentAt: i)
}
//do additional operations here
return segmentControl
}
建议-将枚举的名称从HomeOptions更改为HomeOption。
答案 1 :(得分:0)
您可以这样创建一个UISegmentControl:
let segmentControl = UISegmentedControl.init()
for i in 0..<yourOptions.count {
let option = yourOptions[i]
segmentControl.setTitle(option.title, forSegmentAt: i)
}
segmentControl.frame = yourDesiredFrame
yourView.addSubView(segmentControl)
此处yourOptions是Options的数组,yourDesiredFrame是希望UISegmentControl拥有的框架,而yourView是要在其中添加此UISegmentControl的视图。