Добавьте вычисляемое свойство к классу StockModel
, который собирает titleStr
.
extension StockModel {
var titleStr: String {
return [customer].compactMap({ $0 }).joined(separator: "-")
}
}
. Вы можете использовать это при снятии очереди с ячейки:
myCell.textLabel!.text = item.titleStr
Внутри вашегоПервый контроллер представления, тот, который показывает табличное представление StockModel
ячеек, вы можете подготовить целевой контроллер представления (showCustomerDetails
), когда ячейка выбрана.Унаследованный метод, который мы переопределяем ниже, предоставляет вам segue (давая вам контроллер назначения) и отправителя segue.Ячейка прототипа в раскадровке соединена с контроллером showCustomerDetails
, поэтому отправителем в этом сценарии будет выбран UITableViewCell
.
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
switch (segue.destination, sender) {
case (let controller as showCustomerDetails, let cell as UITableViewCell):
if let indexPath = tableView.indexPath(for: cell) {
controller.selectedStock = feedItems[indexPath.row] as? StockModel
}
default:
break
}
}
В вашем контроллере вида showCustomerDetail
япредположили, что свойство selectedStock
должно быть StockModel
, а не DetailModel
.В этом случае вы можете использовать свойство customer
selectedStock
для загрузки элементов, относящихся к этому клиенту.
func downloadItems(customerLabel: String)
Выполните эту настройку для функции, чтобы можно было передать titleStr
,В методе viewDidLoad
showCustomerDetails
, используя selectedStock
, предполагая, что он имеет тип StockModel
, вы можете получить customerLabel
, необходимый для загрузки элементов со свойством titleStr
.
detailModel.downloadItems(customerLabel: selectedStock.titleStr)