En vue table, je peux sélectionner plusieurs sources de données en faisant cela si (tableView == self.tableOutletName)

Mais quand il s'agit de segmenter que dois-je faire? ici j'ai 3 segmentsControls

@IBOutlet weak var segmentView1: SJFluidSegmentedControl!

@IBOutlet weak var segmentView2: SJFluidSegmentedControl!

@IBOutlet weak var segmentView3: SJFluidSegmentedControl!

Comment vais-je réécrire cette fonction

func numberOfSegmentsInSegmentedControl(_ segmentedControl: SJFluidSegmentedControl) -> Int 

{

    return 6

}

Afin que je puisse donner à chaque segment de contrôle 6 4 et 3 segments respectivement ..

Code mis à jour ici, je reçois une erreur fatale

Importation de la Fondation importation UIKit

Importer SJFluidSegmentedControl

Classe DataSource2: UIViewController, SJFluidSegmentedControlDataSource {@IBOutlet faible var segmentView1: SJFluidSegmentedControl!

@IBOutlet weak var segmentView2: SJFluidSegmentedControl!

@IBOutlet weak var segmentView3: SJFluidSegmentedControl!
func numberOfSegmentsInSegmentedControl(_ segmentedControl: SJFluidSegmentedControl) -> Int {


    switch segmentedControl {
    case segmentView1: return 6
    case segmentView2: return 4
    case segmentView3: return 3
    default: return 3
    }


}
func segmentedControl(_ segmentedControl: SJFluidSegmentedControl,
                      titleForSegmentAtIndex index: Int) -> String? {
    if index == 0 {
        return "None".uppercased()
    } else if index == 1 {
        return "1 Hrs".uppercased()
    }
    else if index == 2 {
        return "2 Hrs".uppercased()
    }
    else if index == 3 {
        return "3 Hrs".uppercased()
    }
    else if index == 4 {
        return "12 Hrs".uppercased()
    }
    else if index == 5 {
        return "24 Hrs".uppercased()
    }
    return "0".uppercased()
}

func segmentedControl(_ segmentedControl: SJFluidSegmentedControl,
                      gradientColorsForSelectedSegmentAtIndex index: Int) -> [UIColor] {
    switch index {
    case 0:
        return [UIColor(red: 51 / 255.0, green: 149 / 255.0, blue: 182 / 255.0, alpha: 1.0),
                UIColor(red: 97 / 255.0, green: 199 / 255.0, blue: 234 / 255.0, alpha: 1.0)]
    case 1:
        return [UIColor(red: 227 / 255.0, green: 206 / 255.0, blue: 160 / 255.0, alpha: 1.0),
                UIColor(red: 225 / 255.0, green: 195 / 255.0, blue: 128 / 255.0, alpha: 1.0)]
    case 2:
        return [UIColor(red: 21 / 255.0, green: 94 / 255.0, blue: 119 / 255.0, alpha: 1.0),
                UIColor(red: 9 / 255.0, green: 82 / 255.0, blue: 107 / 255.0, alpha: 1.0)]
    case 3:
        return [UIColor(red: 51 / 255.0, green: 149 / 255.0, blue: 182 / 255.0, alpha: 1.0),
                UIColor(red: 97 / 255.0, green: 199 / 255.0, blue: 234 / 255.0, alpha: 1.0)]
    case 4:
        return [UIColor(red: 227 / 255.0, green: 206 / 255.0, blue: 160 / 255.0, alpha: 1.0),
                UIColor(red: 225 / 255.0, green: 195 / 255.0, blue: 128 / 255.0, alpha: 1.0)]
    case 5:
        return [UIColor(red: 21 / 255.0, green: 94 / 255.0, blue: 119 / 255.0, alpha: 1.0),
                UIColor(red: 9 / 255.0, green: 82 / 255.0, blue: 107 / 255.0, alpha: 1.0)]        default:
        break
    }
    return [.clear]
}

func segmentedControl(_ segmentedControl: SJFluidSegmentedControl,
                      gradientColorsForBounce bounce: SJFluidSegmentedControlBounce) -> [UIColor] {
    switch bounce {
    case .left:
        return [UIColor(red: 51 / 255.0, green: 149 / 255.0, blue: 182 / 255.0, alpha: 1.0)]
    case .right:
        return [UIColor(red: 9 / 255.0, green: 82 / 255.0, blue: 107 / 255.0, alpha: 1.0)]
    }
}
override func viewDidLoad() {
    super.viewDidLoad()
    segmentView1.layer.borderColor = UIColor.blue.cgColor
    segmentView1.layer.borderWidth = 2
    segmentView1.layer.cornerRadius = 25
    segmentView1.clipsToBounds = true

    segmentView2.layer.borderColor = UIColor.blue.cgColor
    segmentView2.layer.borderWidth = 2
    segmentView2.layer.cornerRadius = 25
    segmentView2.clipsToBounds = true

    segmentView3.layer.borderColor = UIColor.blue.cgColor
    segmentView3.layer.borderWidth = 2
    segmentView3.layer.cornerRadius = 25
    segmentView3.clipsToBounds = true
}

override func viewWillAppear(_ animated: Bool) {

    super.viewWillAppear(animated)
}

}

0
rolling Ztoned 21 avril 2017 à 09:42

3 réponses

Meilleure réponse

Vous pouvez toujours créer une classe distincte pour chaque source de données de contrôle segmentée au lieu de pointer toutes les sources de données de contrôle segmentées vers le même contrôleur de vue. Ce serait plus propre que d'avoir des instructions switch / if / else tout au long de votre code.

0
adamfowlerphoto 21 avril 2017 à 07:45

Vous pouvez switch:

switch segmentedControl {
    case segmentView1: return 6
    case segmentView2: return 4
    case segmentView3: return 3
    default: return 0
}

N'oubliez pas de définir self comme source de données pour tous les contrôles segmentés!

1
Sweeper 21 avril 2017 à 06:50

Utilisez les instructions switch / if dans votre méthode de source de données comme ceci:

func numberOfSegmentsInSegmentedControl(_ segmentedControl: SJFluidSegmentedControl) -> Int {
    switch segmentedControl {
    case segmentView1 : 
         return 6
    case segmentView2 : 
         return 4
    case segmentView3 :
         return 3
    default :
         return 0
    }
}
1
Akash Malhotra 21 avril 2017 à 07:04