Как выбрать страну по умолчанию в табличном представлении? - PullRequest
0 голосов
/ 29 января 2019

Я создаю приложение, которое требует проверки телефона.Я могу изменить код страны, когда нажимаю кнопку.По умолчанию выбранная страна должна быть страной с «60» (например).Он должен работать следующим образом: нажмите кнопку - появится список стран, а в стране по умолчанию должна быть галочка.Затем, если я нажму на другую страну, последняя выбранная страна должна иметь галочку, если я нажму кнопку.Но что произойдет, когда callCode = "60" (по умолчанию), после этого он не сможет пройти через коды (пусть i = ..).Этот код (пусть i = ..) будет проходить только в том случае, если callCode = vc.country.calling_code.Кто-нибудь знает, как лучше всего это сделать?

func selectDefaultCountry(countries: [Countries]) {
    var callingCode = ""

    if vc.country.calling_code != ""  {
        callingCode = vc.country.calling_code
    }
    else {
        callingCode = "60"
    }

    if let i = countries.firstIndex(where: {$0.calling_code == callingCode}) {

        let indexPath = IndexPath(row: i, section: 0)

        vc.changeCountryTV.selectRow(at: indexPath, animated: true, scrollPosition: .none)
        // Green checkmark
        vc.changeCountryTV.cellForRow(at: indexPath)?.accessoryType = .checkmark
        vc.changeCountryTV.cellForRow(at: indexPath)?.tintColor = Constants.Colors.greenColor
    }
}

Ответы [ 2 ]

0 голосов
/ 29 января 2019

Создайте объект своей страны следующим образом

struct CountryModel:Decodable{
    var countries:[Country]?
}

struct Country:Decodable {
    var name:String?
    var isSelected:Bool?
}

В функции выбора SelectDefaultCountry вы выбираете значение True, и если пользователь пытается изменить его, нажав кнопку страны, сначала измените все значения isSelected на false и сделайте trueдля одного выбранного.Это должно упростить вам управление.

0 голосов
/ 29 января 2019

для этого нужно сравнить выбранную страну в cellForRowAt indexPath методе:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    // Your code for initialize UITableView cell
    let country = countries[indexPath.row]
    if(vc.country.calling_code == country.calling_code)
        cell.accessoryType = .checkmark
    else
        cell.accessoryType = .none
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...