こんな感じです
コードと簡単解説
-
let realm = try Realm()
でRealm()のインスタンスを作成します -
for文で
realm.objects(RealmDataSets.self)
で取得したRealmの値をreadRealmTagに入れます。 -
realmTagArray.allSatisfy
でreadRealmTagの値がrealmTagArrayの全ての値に、同じものがないのなら、realmTagArray.append(readRealmTag.tag)
で配列に値を追加します。 -
同じタイトルのSegmentができない様に、realmTagArrayの中に同じ値が入らない様にしています。
~~~一部省略~~~
var realmTagArray = [String]()
func readRealmTag(){
do{
let realm = try Realm()
realmTagArray = []
for readRealmTag in realm.objects(RealmDataSets.self){
if realmTagArray.allSatisfy({$0 != readRealmTag.tag}) == true{
realmTagArray.append(readRealmTag.tag)
}
}
}catch{
//エラー処理など
}
}
-
.removeAllSegments()
でSegmentを削除出来ます。(新しいSegmentを作る際に、以前作成したSegmentが残ってると古いSegmentの上に新しいSegmentが表示されてしまい、変な見た目になります。) -
エラー回避のために
realmCRUDModel.realmTagArray.count
が0の時はSegmentを作成させない様にします。 -
UISegmentedControl()
は簡単にですがこちらで解説しました。Buttonを押すとSegmentが増える(UISegmentedControl)
~~~一部省略~~~
var uiSegmentControl = UISegmentedControl()
let realmCRUDModel = RealmCRUDModel()
func createSegment(targetView:UIView){
realmCRUDModel.readRealmTag()
uiSegmentControl.removeAllSegments()
if realmCRUDModel.realmTagArray.count != 0{
for segmentCount in 0...realmCRUDModel.realmTagArray.count - 1{
uiSegmentControl.insertSegment(withTitle: realmCRUDModel.realmTagArray[segmentCount], at: segmentCount, animated: true)
}
}
uiSegmentControl.frame = CGRect(x: targetView.bounds.minX + 5, y: targetView.bounds.minY + 97, width: targetView.frame.size.width - 10, height: 32)
uiSegmentControl.selectedSegmentTintColor = UIColor(red: 1.0, green: 0.40, blue: 0.51, alpha: 1.0)
targetView.addSubview(uiSegmentControl)
}
終わり
最近、作っているアプリからの内容でした。
ご指摘、ご質問などありましたら、コメントまでお願い致します。