Как перезагрузить TableVIew, используя модель NSObject Class с MVVM - PullRequest
0 голосов
/ 09 марта 2019

Я хочу перезагрузить TableView без метода tableview.reloadData (), для этого я использовал структуру MVVM, поэтому я прикрепил класс модели к раскадровке, и проблема заключается в том, что мое представление таблицы сначала перезагружается, а затем я получаю все данные, как я должен решитьЭта проблема, пожалуйста, помогите мне, если у кого-то есть решение !!

Это приложение раскадровки модели

enter image description here

Код модели: -

class MovieModel: Decodable{

    var artistName: String = ""
    var trackName: String = ""

    init(artistName: String, trackName: String){
        self.artistName = artistName
        self.trackName = trackName
    }

}

class ResultModel: Decodable{

    var results = [MovieModel]()

    init(results: [MovieModel]) {
        self.results = results
    }
}

My ViewModel Код файла: -

class MovieViewModel: NSObject {

    var artistName: String = ""
    var trackName: String = ""
    var movieModel: MovieModel?
     var movieData = [MovieViewModel]()

    override init() {

    }

    init(movie: MovieModel) {
        self.artistName = movie.artistName
        self.trackName = movie.trackName
    }

    func getData(){
        Service.shareInstance.getAllMovieData { (movie, error) in
            if error == nil{
                self.movieData = movie?.map({return MovieViewModel(movie: $0)}) ?? []
                print(self.movieData)
            }else{
                print("\(String(describing: error))")
            }
        }
    }

    func numberOfRow(section:Int) -> Int{
        return movieData.count
    }

    func cellForRow(indexPath: IndexPath) -> MovieViewModel{
        return self.movieData[indexPath.row]
    }


}

Мой код ViewController: -

class ViewController: UIViewController {

    @IBOutlet var movieVM: MovieViewModel?
    @IBOutlet var tableView: UITableView!
    override func viewDidLoad() {
        super.viewDidLoad()
            self.movieVM?.getData()
    }
}

extension ViewController: UITableViewDelegate, UITableViewDataSource{

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return movieVM?.numberOfRow(section: section) ?? 0
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "cell")
        let movie = movieVM?.cellForRow(indexPath: indexPath)
        cell?.textLabel?.text = movie?.artistName
        cell?.detailTextLabel?.text = movie?.trackName
        return cell!
    }

}

В моем случае я не перезагружаю таблицу, все это делается с помощьюModelClass!Спасибо !!

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