Size: a a a

2021 January 23

ЕУ

Евгений Усков... in SwiftBook
источник

S

Satin in SwiftBook
Евгений Усков
Доброе утро!
У меня есть UITableView. с 2 секциями. В секциях использую разные Cell.
У каждого Cell есть метод configure().
В configure() я устанавливаю значения лейблов и загружаю изображение для ячейки сверху.
Однако при первом показе этого ViewController ячейка первой секции отображается, метод configure() вызывается, но ячейка данными не заполняется.

При втором показе все ок. Есть предположения почему так происходит?
То есть первый раз открываешь, не показывает, возвращаешься, открываешь снова и показывает ?
источник

ЕУ

Евгений Усков... in SwiftBook
Satin
То есть первый раз открываешь, не показывает, возвращаешься, открываешь снова и показывает ?
да
источник

ЕУ

Евгений Усков... in SwiftBook
во второй секции показывает сразу. Вторая секция - это треки
источник

S

Satin in SwiftBook
Проследи в какой момент заполняются данные, может требуется метод tableView.reloadData()
источник

A

Ast in SwiftBook
Евгений Усков
Доброе утро!
У меня есть UITableView. с 2 секциями. В секциях использую разные Cell.
У каждого Cell есть метод configure().
В configure() я устанавливаю значения лейблов и загружаю изображение для ячейки сверху.
Однако при первом показе этого ViewController ячейка первой секции отображается, метод configure() вызывается, но ячейка данными не заполняется.

При втором показе все ок. Есть предположения почему так происходит?
А можно посмотреть на метод configure?
источник

ЕУ

Евгений Усков... in SwiftBook
он есть. ведь вызывается cellforRowAt
источник

ЕУ

Евгений Усков... in SwiftBook
Ast
А можно посмотреть на метод configure?
public class InfoCell: UITableViewCell {
   
   func configure(with viewModel: DetailsViewModel) {
       detailsView.configure(with: viewModel)
       configureImageView(with: viewModel)
   }
   
   private func configureImageView(with viewModel: DetailsViewModel) {
       let string300 = viewModel.iconUrlString?.replacingOccurrences(of: "100x100", with: "300x300")
       guard let url = URL(string: string300 ?? "") else { return }
       albumImageView.kf.indicatorType = .activity
       albumImageView.kf.setImage(
           with: url,
           placeholder: UIImage(named: "Album Cover"),
           options: [
               .scaleFactor(UIScreen.main.scale),
               .transition(.fade(1)),
               .cacheOriginalImage
           ])
   }
}

public class DetailInfoView: UIView {
   
   public func configure(with viewModel: DetailsViewModel) {
       albumTitleLabel.text = viewModel.collectionName
       albumArtistLabel.text = viewModel.artistName
       albumReleaseDateLabel.text = viewModel.releaseDate
       albumGenreLabel.text = viewModel.primaryGenreName
   }
}
источник

ЕУ

Евгений Усков... in SwiftBook
Если закомментировать загрузку изображений. лейблы с текстами тоже не отображаются. то есть дело не в загрузке изображений
источник

IM

Ilnur Mugaev in SwiftBook
Всем привет, кто-нибудь в алгоритмах шарит?
источник

A

Ast in SwiftBook
рискну предположить что это точно не 4
источник

Д

Дмитрий in SwiftBook
Give Five Give Seven
Согласен с тобой. Боль ещё та, до сих пор не знаю, как сделать Sidebar с динамическими элементами. Если строку оборачивать в NavigationLink, то есть какой - то непонятный баг с выделением. Оно теряется при удалении элемента выше выделения. + если у List SidebarStyle, то пропадает анимация перемещения View (например, переименовал элемент и он занял новое место по алфавиту в списке). Эта фигня даже в стандартных приложениях Big Sur. Да и много других косяков.
Я прячу навигейшн линк, и в кнопке меняю isActive, работает довольно хорошо.
источник

C

ChatKeeperBot in SwiftBook
👋 Reynaldo Dixon, рады приветствовать тебя в «SwiftBook»

В этой группе мы обсуждаем Xcode, Swift. А также другие инструменты для разработчиков.😉

Пожалуйста ознакомьтесь с правилами группы
источник

G

Give Five Give Seven in SwiftBook
Дмитрий
Я прячу навигейшн линк, и в кнопке меняю isActive, работает довольно хорошо.
Я использую Binding var selected : String и назначаю tag для каждого NavigationLink. Причём, если не оборачивать динамические строки в NavigationLink, то удаление работает хорошо, но тогда непонятно, как производить переход. Неужели, Apple не рассматривали динамический контент в Sidebar. + destination в NavigationLink не фига ни lazy.
источник

O

Oleg in SwiftBook
почему nil выдает?
источник

KV

Kirill Var in SwiftBook
Oleg
почему nil выдает?
Попробуйте завернуть в docatch блок и используйте не опциональный try
Увидите причину nil
источник

Д

Дмитрий in SwiftBook
Give Five Give Seven
Я использую Binding var selected : String и назначаю tag для каждого NavigationLink. Причём, если не оборачивать динамические строки в NavigationLink, то удаление работает хорошо, но тогда непонятно, как производить переход. Неужели, Apple не рассматривали динамический контент в Sidebar. + destination в NavigationLink не фига ни lazy.
А навигейшн линки в сайдбаре это бред) в некоторых случаях у меня вообще не то вью открывается, если быстро переключаться
источник

Д

Дмитрий in SwiftBook
Oleg
почему nil выдает?
Скопируй код сюда
источник

O

Oleg in SwiftBook
Дмитрий
Скопируй код сюда
guard let url = URL(string: "https://api.openweathermap.org/data/2.5/weather?q=Moscow&appid=7e3403ac663fef8ed47de5ca39a32c07&units") else{
   fatalError("Invalid URL")
}

struct Weather: Decodable {
   let main: String
   let discription: String
}

struct WeatherResponce: Decodable{
   let weather: [Weather]
}

URLSession.shared.dataTask(with: url) { data, response, error in
   
   guard let data = data, error == nil else {
       return
   }
   
   let result = try? JSONDecoder().decode(WeatherResponce.self, from: data)
   
   if let result = result {
       print(result)
       result.weather.forEach{
           print($0.main)
           print($0.discription)
           
       }
   }
   
}.resume()
источник

O

Oleg in SwiftBook
всё сделал как мужик на видео, у него работает а у меня нет(
источник