2017-02-09 1 views
0

// IBAction для управления сегмента, чтобы изменить значение в меткеЯ хочу использовать pickerview в управлении сегментом, так что когда я переключаю данные о сборщиках сегментов, также меняются. вот мой код:

@IBAction func changeValueSC(_ sender: Any) { 

    switch segmentControl.selectedSegmentIndex { 
    case 0: 
     questionLabel.text = "HAS FOOD INTAKE DECLINED OVER THE PAST 3 MONTHS, DUE TO LOSS OF APPETITE, DIGESTIVE PROBLEMS, CHEWING OR SWALLOWING DIFFICULTIES ?" 
     //[self, pickerView(pickerView, titleForRow: 5, forComponent: 1)!] as [Any] 
    case 1: 
     questionLabel.text = "WEIGHT LOSS DURING THE PAST 3 MONTHS ?" 
    case 2: 
     questionLabel.text = "MOBILITY" 
    case 3: 
     questionLabel.text = "HAVE YOU SUFFERED PSYCHOLOGICAL STRESS OR ACUTE DISEASE IN THE PAST 3 MONTHS ?" 
    case 4: 
     questionLabel.text = "NUEROPSYCHOLOGICAL PROBLEMS" 

    default: 
     break 
    } 

} 

// обязательные методы pickerview

public func numberOfComponents(in pickerView: UIPickerView) -> Int{ 

    return 1 
} 

// options1, Options2 ..... options5 являются массивы типа строка

public func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int{ 

    switch segmentControl.selectedSegmentIndex { 
    case 0: 
     return options1.count 
    case 1: 
     return options2.count 
    case 2: 
     return options3.count 
    case 3: 
     return options4.count 
    case 4: 
     return options5.count 
    default: 
     return 0 
    } 
} 

func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String?{ 



    switch segmentControl.selectedSegmentIndex { 
    case 0: 
     return options1[row] 
    case 1: 
     return options2[row] 
    case 2: 
     return options3[row] 
    case 3: 
     return options4[row] 
    case 4: 
     return options5[row] 
    default: 
     return "" 
    } 

} 

, когда я меняюсь сегмент данные метки меняются, но данные не отображаются в окне просмотра захватывающего

screenshot of the view controller

+0

У меня есть то же решение, что и у Андреаса Оетена, вы можете поделиться своим массивом – Deepak

ответ

1

Вы должны сказать мнение сборщика, что данные изменились, и он должен обновить некоторые (или все) из его компонентов:

@IBAction func changeValueSC(_ sender: Any) { 

    // ... same as before 

    self.pickerView.reloadComponent(0) 
    // or: reloadAllComponents() 
} 
+0

просто попробовал, что до сих пор не используется –

+0

Вы поставили точку останова в функции 'numberOfRowsInComponent' и' titleForRow', чтобы проверить, вызвана ли она? –

+0

Я новичок в разработке приложений ios, не знаю, как правильно использовать контрольные точки:/ –

0

В вашей changeValueSC функции вам нужно вызвать self.pickerView.reloadAllComponents() ,

 Смежные вопросы

  • Нет связанных вопросов^_^