Добрый день, я только учусь.
вот у меня есть несколько UILabel и я понятия не имею как мне сделать чтобы в фиолетовом лейбле суммировалась вся сумма/количество (искал в интернетах, ничего не смог найти подходящего) буду рад помощи и советам, всем заранее спасибо и хорошего дня
UILabel сумма нескольких Label
Объедените все лейблы в один аутлет (объединяйте по соответствующим группам)
@IBOutlet var sumLabels: [UILabel]!
А дальше суммируете, но сперва приводите все в Int
let sum = sumLabels.map { Int($0.text ?? "") }.sum()
Спасибо, можешь мне написать в Телеграмм, у меня просто ещё есть пару вопросов, чтобы не засорять эту тему и сам форум
Кстати, еще совет на будущее. Делайте такой UI через таблицу. В случае каких либо изменений замахаетесь обновлять это все.
Да и с расширением у таблицы будет все просто и быстро.
Тогда правда сумма всех лейблов немного по другому будет вычисляться.
А ещё лучше всё кодом через динамическую табличку с датасорсем, чтобы любой момент подкинуть новые строки.
я как не очень шарю во всем этом, прошу показать или объяснить как это сделать, пример может какой-то (можно и не на моем коде, чтобы не делать роботу за меня, но чтобы я мог как-то дойти к тому что сделаю это, а то по вашим словам очень все как-то просто и понятно, а мне реализовать очень тяжело)
создаете енум, обозначаете каждое нужное поле. подписываете енум под протокол CaseIterable вроде.
далее работаете с обычным заполнением таблицы. в качестве данных будет выступать EnumClass.allCases, это вернет массив всех значений енума. Надеюсь с заполнением таблицы массивом строк умеете пользоваться, вот это и получится.
В будущес енум можно расширять, добавлять новые напитки, при этом с таблицей ничего делать не надо будет, напитки сами там добавятся. В этом и вся простота.
Внутри енума можно создавать внутренние свойства, вычисляемые на основе конкретного value.
К примеру
var color: UIColor {
switch self {
case .late: return .red
case .americano: return .brown
// и так далее
}
}
Так можно создавать любые ограничения или что-то другое.
Пользоваться в таблице этим так
let cell = tableView.dequeue(...)
let drink = EnumClass.allCases[indexPath.row]
cell.backgroundColor = drink.color
...
Таким образом у вас не будет тонны элементов в сторибоарде, не надо будет заморачиваться с ними, выставлять констрейнты, стили и прочее. Будет только одна таблица. Так же будет только один класс для ячейки, где будут общие элементы в одном экземпляре (название напитка, степпер, лейбл с ценой, лейбл с кол-вом). А ну и второй класс ячейки, который будет показывать суммы.
Как получить сумму из всех ячеек, можете поискать тут на форуме, были такие вопросы. Или поискать в гугле. Вариантов разных достаточно. Но лучше сперва попробовать сделать самому как получится.
Спасибо за информацию, очень рад что помогаете
Надеюсь что все выйдет, а то будет неловко сюда возвращаться снова за помощью
Хорошего вечерочка
как самый простой вариант можно сделать кнопку, по нажатию на которую будут суммироваться значения отдельных лейблов и итоговая сумма будет показываться на фиолетовом лейбле.
Тем более, что у вас уже в степперах есть все значения и в формате Int. Осталось только их суммировать, перевести в String и присвоить итоговому лейблу.
Это конечно на самый оптимальный вариант по сравнению с теми, которые вам предложили, но для начальной тренировки и понимания работы Xcode вполне подойдет.