将数据传递到UITableView

问题描述 投票:0回答:1

我是新手,并且一直在尝试在视图控制器之间传递数据。我一直试图将数据从视图控制器传递到UITableViewCell中,但是一旦运行,我的代码将无效。

DetailViewController(将数据传递到libraryViewController)

 func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        let DestViewController: LibraryMovieViewController = segue.destination as! LibraryMovieViewController

        DestViewController.movieTitle = movieTitle
        DestViewController.movieRelease = movieReleaseDate

    }
}

UITableViewCell

class MovieSearchTableViewCell: UITableViewCell {

    @IBOutlet weak var titleLabel: UILabel!
    @IBOutlet weak var posterView: UIImageView!
    @IBOutlet weak var overviewLabel: UILabel!

}

LibraryViewController

struct libMovie {
    //let mainImage: UIImage
    let title: String
    let release: String

}
class LibraryMovieViewController: UIViewController {

    @IBOutlet weak var tableView: UITableView!

    var dataSource: [libMovie] = []
    var movieTitle: String!
    var movieRelease: String!

     override func viewDidLoad() {
         super.viewDidLoad()
        tableView.dataSource = self
        tableView.delegate = self

     // Do any additional setup after loading the view.
        loadDataSource()
    }
    func loadDataSource(){
       // dataSource.append(libMovie(title: " \(movieTitle)", release: " \(movieRelease)"))
    }
}
extension LibraryMovieViewController: UITableViewDataSource, UITableViewDelegate{

    func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
        return 115
    }
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return dataSource.count
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) ->  UITableViewCell {

        guard let movieCell = tableView.dequeueReusableCell(withIdentifier: "libCell", for: indexPath) as? LibraryMovieTableViewCell else {
            return UITableViewCell()
        }
        let libMovie = dataSource[indexPath.row]

        movieCell.cellTitleLabel.text =  "Movie Title: \(movieTitle)"
        movieCell.cellReleaseLabel.text = "Release Date: \(movieRelease)"
        return movieCell
    }
}

我希望运行该应用程序时,将从详细视图控制器传递movieTitle和movieReleaseDate并将其输入到库表单元格中,这是通过在详细视图控制器上点击一个按钮来启动的。

然而,这似乎对程序没有影响,或者仅返回空白单元格。控制台中未报告任何错误,应用也不会崩溃

swift xcode uitableview uistoryboardsegue
1个回答
0
投票

在您的代码中,numberOfRowsInSection返回dataSource.count,但似乎没有将该数据传递给此视图控制器。

您可以将numberOfRowsInSection硬编码为1,也可以从第一个视图控制器传递dataSource并更新cellForRowAtIndexPath方法。

© www.soinside.com 2019 - 2024. All rights reserved.