Gibt es eine Möglichkeit, die Anzahl der Segmente programmgesteuert zu ändern?
ios
uikit
uisegmentedcontrol
Beppino66
quelle
quelle
Um die Segmente vollständig zu ersetzen, können Sie die folgende Funktion verwenden:
- (void)setSegments:(NSArray *)segments { [segmentController removeAllSegments]; for (NSString *segment in segments) { [segmentController insertSegmentWithTitle:segment atIndex:segmentController.numberOfSegments animated:NO]; } }
Hoffe das hilft.
quelle
[segmentController removeAllSegments]
gemäß dem Kommentar von @ MCR verwendet zu werden.Und hier ist eine kleine Swift-Erweiterung, um das aktuelle segmentedControl durch eine Reihe neuer Werte zu ersetzen
Swift 3
extension UISegmentedControl { func replaceSegments(segments: Array<String>) { self.removeAllSegments() for segment in segments { self.insertSegmentWithTitle(segment, atIndex: self.numberOfSegments, animated: false) } } }
Swift 4
extension UISegmentedControl { func replaceSegments(segments: Array<String>) { self.removeAllSegments() for segment in segments { self.insertSegment(withTitle: segment, at: self.numberOfSegments, animated: false) } } }
quelle
Der Vollständigkeit halber (und weil ich hier gelandet bin, um zu sehen, wie man dasselbe in xib erreicht) ist hier, wie man es in xib macht:
quelle
Hier ist eine Swift-Erweiterung zum Ersetzen der Segmente durch eine Folge von Zeichenfolgen. Es ähnelt einer anderen hier gegebenen Antwort , außer dass es mit jeder Sequenz verwendet werden kann, was bedeutet, dass Sie auch Slices, Sets usw. übergeben können.
extension UISegmentedControl { /// Replace the current segments with new ones using a given sequence of string. /// - parameter withTitles: The titles for the new segments. public func replaceSegments<T: Sequence>(withTitles: T) where T.Iterator.Element == String { removeAllSegments() for title in withTitles { insertSegment(withTitle: title, at: numberOfSegments, animated: false) } } }
quelle
Arbeit für mich, UIsegmentedControll enthält zwei Segmente, ich möchte eines in Index 2 hinzufügen, verwenden Sie diesen Code in Swift 2.2 verwenden:
SEG_TipoFiltro.insertSegmentWithTitle("Title", atIndex: 2, animated: false)
quelle
Hinzufügen und Löschen von Segmenten in swift4 mithilfe von Code
class ViewController: UIViewController { @IBOutlet weak var segment1: UISegmentedControl! override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. } @IBAction func insert(_ sender: Any) { segment1.insertSegment(withTitle: "\(segment1.numberOfSegments+1)", at: segment1.numberOfSegments, animated: true) } @IBAction func remove(_ sender: Any) { segment1.removeSegment(at: segment1.numberOfSegments-1, animated: true) } }
quelle