BlueWallet/ios/Components/SegmentedControl/CustomSegmentedControl.swift
2026-03-16 21:13:23 +00:00

48 lines
1.2 KiB
Swift

import UIKit
import React
@objc(CustomSegmentedControl)
class CustomSegmentedControl: UISegmentedControl {
@objc var onChange: RCTBubblingEventBlock?
@objc var values: [String] = [] {
didSet {
removeAllSegments()
for (index, title) in values.enumerated() {
insertSegment(withTitle: title, at: index, animated: false)
}
}
}
@objc var selectedIndex: NSNumber = 0 {
didSet {
self.selectedSegmentIndex = selectedIndex.intValue
}
}
override init(frame: CGRect) {
super.init(frame: frame)
addTarget(self, action: #selector(onChange(_:)), for: .valueChanged)
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
addTarget(self, action: #selector(onChange(_:)), for: .valueChanged)
}
@objc func onChange(_ sender: UISegmentedControl) {
onChange?(["selectedIndex": sender.selectedSegmentIndex])
}
}
@objc(CustomSegmentedControlManager)
class CustomSegmentedControlManager: RCTViewManager {
override func view() -> UIView! {
return CustomSegmentedControl(frame: .zero)
}
override class func requiresMainQueueSetup() -> Bool {
return true
}
}