Commit 8fcc9797 by Demid Merzlyakov

Fix crash in TodayDayTimesCell.

parent f39d9614
......@@ -55,40 +55,40 @@ class TodayDayTimesCell: UITableViewCell {
public func configure(with location: Location) {
let maxNumberOfItems = 4
guard !location.dayTimeForecast.isEmpty else {
return
}
var validDayTimeWeather = [DayTimeWeather]()
for index in 0..<location.dayTimeForecast.count {
if location.dayTimeForecast[index].date >= Date() {
validDayTimeWeather.append(location.dayTimeForecast[index])
}
}
if validDayTimeWeather.isEmpty {
return
}
if stackView.arrangedSubviews.isEmpty {
for index in 0..<maxNumberOfItems {
let view = DayTimeView(dayTimeWeather: validDayTimeWeather[index],
withSeparator: index != maxNumberOfItems - 1)
stackView.addArrangedSubview(view)
for dayTimeWeather: DayTimeWeather in location.dayTimeForecast {
if dayTimeWeather.date >= Date() {
validDayTimeWeather.append(dayTimeWeather)
if validDayTimeWeather.count == maxNumberOfItems {
break
}
}
stackView.layoutIfNeeded()
return
}
if stackView.arrangedSubviews.count == maxNumberOfItems {
for (index, arrangedSubview) in stackView.arrangedSubviews.enumerated() {
var currentValidWeatherIndex = 0
for (index, arrangedSubview) in stackView.arrangedSubviews.enumerated() {
// Configure existing views
if currentValidWeatherIndex < validDayTimeWeather.count {
guard let dayTimeView = arrangedSubview as? DayTimeView else {
continue
}
dayTimeView.configure(with: validDayTimeWeather[index])
dayTimeView.configure(with: validDayTimeWeather[currentValidWeatherIndex])
currentValidWeatherIndex += 1
}
else {
// Remove excessive views
arrangedSubview.removeFromSuperview()
}
}
// Add new views if needed.
while currentValidWeatherIndex < validDayTimeWeather.count {
let isLastItem = currentValidWeatherIndex == validDayTimeWeather.count - 1
let view = DayTimeView(dayTimeWeather: validDayTimeWeather[currentValidWeatherIndex],
withSeparator: !isLastItem)
stackView.addArrangedSubview(view)
currentValidWeatherIndex += 1
}
stackView.layoutIfNeeded()
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment