Хороший способ отобразить Tableview от объекта - iOS Swift - PullRequest
0 голосов
/ 02 апреля 2019

У меня есть объект, у которого есть свойства, и я хочу отобразить каждое свойство в виде строки табличного представления. Как мне подготовить свой источник данных

Например:

struct Car {
    var make: String
    var model: String
    var year: String
    var vin: String
}

let ford = Car(make: Ford, model: Mustang, year: 2018, vin: 1234)

Теперь в моем табличном представлении мне нужно отобразить, как показано ниже, т.е. каждое свойство в виде ячейки строки таблицы

enter image description here

Как мне подготовить мой источник данных?

Я понимаю, что мне нужно добавить это в массив с именем свойства: значение, подобное

["make":"Ford", "model":"Mustang", ...]

но как я могу это сделать и как я могу разобрать его для отображения в моем методе cellForRow.

Пожалуйста, совет

Это всего лишь образец. В моей реальной структуре у меня более 20 свойств, и каждое из них должно отображаться в строке таблицы. Так хотелось, чтобы это было в табличном представлении

Ответы [ 2 ]

1 голос
/ 02 апреля 2019

Если вы знаете свою структуру ...

Создайте пользовательскую ячейку табличного представления с меткой «имя свойства» и меткой «значение» (как показано на вашем изображении).

Добавить переменные класса:

let propertyArray = [
    "Make",
    "Model",
    "Year",
    "VIN"
]

var valueArray: [String] = [String]()

когда вы выбрали Car объект,

valueArray = [
    selectedCarObject.make,
    selectedCarObject.model,
    selectedCarObject.year,
    selectedCarObject.vin
]

Теперь ваша реализация tableView может использовать:

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return labelArray.count
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "MyCustomCell", for: indexPath) as! MyCustomCell

    cell.propertyLabel.text = propertyArray[indexPath.row]
    cell.valueLabel.text = valueArray[indexPath.row]

    return cell
}
0 голосов
/ 02 апреля 2019
var modelDictionary = ["make":"Ford", "model":"Mustang", ...]

Ваш modelDictionary будет вашим источником данных, я предполагаю, что ваша ячейка имеет две метки, в которые вы поместите данные ключа и значения словаря.

как вы будете составлять словарь данных вашей модели?

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

Надеюсь, я отвечу на ваш вопрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...