DateRow локальный не меняется - PullRequest
0 голосов
/ 12 декабря 2018

Я создаю FormViewController благодаря фреймворку форм Eureka, но я столкнулся с проблемой для моего DateRow.Я бы хотел, чтобы UIDatePicker отображался на французском языке, но месяцы всегда отображаются на английском.

Я попытался настроить другой UIDatePicker на французском языке на другом контроллере представления, и он работал нормально:

let date = UIDatePicker()
date.datePickerMode = .date
date.locale = Locale(identifier: "fr")
date.frame = CGRect(x: 50, y: 200, width: 300, height: 200)
view.addSubview(date)

French Date Picker

Языкменяется благодаря локальному свойству UIDatePicker, поэтому я попытался добавить это свойство, где в файлах Eureka установлен переключатель даты (поскольку я не думаю, что мы можем получить доступ к средству выбора даты в объекте DateRow).

open class DateCell: Cell<Date>, CellType {

public var datePicker: UIDatePicker

public required init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
    datePicker = UIDatePicker()
    super.init(style: style, reuseIdentifier: reuseIdentifier)
}

required public init?(coder aDecoder: NSCoder) {
    datePicker = UIDatePicker()
    super.init(coder: aDecoder)
}

open override func setup() {
    super.setup()
    accessoryType = .none
    editingAccessoryType =  .none
    datePicker.datePickerMode = datePickerMode()
    datePicker.addTarget(self, action: #selector(DateCell.datePickerValueChanged(_:)), for: .valueChanged)
    datePicker.locale = Locale(identifier: "fr")
}

Но средство выбора даты всегда остается на английском языке.

У вас есть идеи, где мне добавить местную строку?

Заранее спасибо!

1 Ответ

0 голосов
/ 19 декабря 2018

Вы можете получить доступ к datePicker из DateRow как cell.datePicker.Чтобы изменить его локаль, используйте обратный вызов cellSetup.Вы также можете установить форматировщик строки, чтобы значение отображалось в правильной локали:

<<< DateRow(){
    $0.value = Date()
    let formatter = DateFormatter()
    formatter.locale = Locale(identifier: "fr")
    formatter.dateStyle = .long
    $0.dateFormatter = formatter
}.cellSetup({ (cell, row) in
    cell.datePicker.locale = Locale(identifier: "fr")
})
...