2016-04-01 3 views
2

Это вопрос, связанный с проектом с открытым исходным кодом Swift под названием Eureka, и я размещаю этот вопрос здесь на SO, так как они отслеживают их теги здесь.Включить/отключить строку на основе значения из MultipleSelectorRow

Я создал форму, которая имеет MultipleSelectorRow и после этого TextRow. То, что TextRow отключено по умолчанию. В списке MultipleSelectorRow показан список опций.

form 
    +++ Section() 
    <<< MultipleSelectorRow<String>("Lead") { 
     $0.title = "Lead" 
     $0.options = ["Yahoo", "Yelp", "Google", "Referral or Other"] 
    } 
    .onPresent { from, to in 
     to.navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .Done, target: from, action: #selector(ViewController.multipleSelectorDone(_:))) 
    } 
    <<< TextRow("Referral") { 
     $0.title = "Note Referral or Other" 
     $0.disabled = "$Lead != 'Referral or Other'" 
    } 

То, что я хочу, если пользователь выбирает последний вариант, направления или Другое, я хочу TextRow быть включен.

Мое текущее выполнение выше не делает этого. Он остается отключенным. Что я здесь делаю неправильно?

ответ

2

По определению MultipleSelectorRow<T> содержит Set<T> как тип значения и, кажется, вы ошибочно ожидаете значение строки.

Сказав, что вы должны попробовать с этим предикатом ...

$0.disabled = "NOT $Lead contains 'Referral or Other'" 

или альтернативно ..

$0.hidden = Condition.Function(["Lead"]) { form in 
     if let r1 : MultipleSelectorRow <String> = form?.rowByTag("tag1") { 
      return r1.value.contains("Referral or Other") == false 
     } 
     return false 
} 

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

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