Ich habe ein UISegmentedControl in einer Ansicht namens SegmentedAnswer mit vier Segmenten. Gibt es eine Möglichkeit, die Anzahl der Segmente programmgesteuert zu ändern? Danke vielmals!
Ja, du kannst verwenden
removeSegmentAtIndex:(NSUInteger) animated:(BOOL)
Und
insertSegmentWithTitle:(NSString *) atIndex:(NSUInteger) animated:(BOOL)
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.
Und hier ist eine kleine Swift Erweiterung, um das aktuelle segmentedControl durch ein Array mit neuen Werten zu ersetzen
extension UISegmentedControl {
func replaceSegments(segments: Array<String>) {
self.removeAllSegments()
for segment in segments {
self.insertSegmentWithTitle(segment, atIndex: self.numberOfSegments, animated: false)
}
}
}
extension UISegmentedControl {
func replaceSegments(segments: Array<String>) {
self.removeAllSegments()
for segment in segments {
self.insertSegment(withTitle: segment, at: self.numberOfSegments, animated: false)
}
}
}
Hier ist eine Swift Erweiterung zum Ersetzen der Segmente durch eine Folge von Zeichenfolgen. Sie ähnelt eine andere Antwort hier angegeben, mit der Ausnahme, dass sie mit jeder Sequenz verwendet werden kann, was Sie können auch in Scheiben, Sets etc. übergeben.
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)
}
}
}
Der Vollständigkeit halber (und weil ich hier gelandet bin, um herauszufinden, wie man dasselbe in xib erreicht), hier ist, wie man es in xib macht:
arbeit für mich, UIsegmentedControll enthält zwei Segmente, ich möchte ein in Index 2 hinzufügen, verwenden Sie diesen Code in Swift 2.2 verwenden:
SEG_TipoFiltro.insertSegmentWithTitle("Title", atIndex: 2, animated: false)