gpt4 book ai didi

ios - SWIFT tableView 行对选择没有反应

转载 作者:行者123 更新时间:2023-11-29 06:01:48 25 4
gpt4 key购买 nike

一些背景:

我正在用电影标题填充 tableView

my table

当选择其中一行时,我想转到电影详细信息但当我点击任何行时,什么也没有发生。

class SearchTableViewController: NavigationController{

@IBOutlet weak var tableView: UITableView!
var filteredMovies = [Movie]()
let request = Requests()


override func viewDidLoad() {
super.viewDidLoad()
}

/*
searches movies from the db which title corresponds to the given text
*/
func searchMovie(_ keywords: String) {
request.searchMovie(keywords: keywords){ response in
for data in response{
self.filteredMovies.append(data)
}
DispatchQueue.main.sync {
self.tableView?.reloadData()
}
}
}
}

extension SearchTableViewController : UITableViewDelegate { }

extension SearchTableViewController: UISearchBarDelegate {
/*
every time a key gets pressed, the table view gets updateted
with new movie titles
*/
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
self.filteredMovies = [Movie]()
searchText.isEmpty ? self.tableView?.reloadData() : searchMovie(searchText)
}
}

extension SearchTableViewController : UITableViewDataSource{

func numberOfSections(in tableView: UITableView) -> Int {
return 1
}

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return filteredMovies.count
}

func tableView(_ tableView: UITableView, didHighlightRowAt indexPath: IndexPath) {
print("hello from highlight")
}

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
print("hello from selection")
}

func tableView(_ tableView: UITableView, didFocusRowAt indexPath: IndexPath) {
print("hello from focus")
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! SearchTableCell
cell.onDidSelectMovie = {
super.goToMovieDetail(movie: self.filteredMovies[indexPath.row])
}
let label = cell.contentView.subviews.first as! UILabel
label.text = filteredMovies[indexPath.row].title
return cell
}
}
正如你所看到的,我测试了每个可能显示一行被点击的函数,但它们都不起作用。我还尝试为单元格提供一个自定义类,在其中覆盖单元格属性“isSelected”的行为。

class SearchTableCell: UITableViewCell {

var onDidSelectMovie:(()->Void)?

override var isSelected: Bool{
didSet {
if isSelected{
if let cb = onDidSelectMovie{
cb()
}
}
}
}
}

我想指出的另一件事可能会有所帮助,那就是单元格上的“选择”就像“用户交互”一样启用,但如果我尝试将选择从“默认”更改为“蓝色”,则颜色不会不变。

我确实没有任何想法并尝试了许多可能的解决方案,但没有一个有效。有什么建议吗?

编辑:我将添加所有有用的内容

  • tableView 委托(delegate)是 SearchTableViewController

最佳答案

看起来我刚刚删除并再次添加了 tableView 委托(delegate)...不要问我为什么,我已经花了 2 天时间在这上面。无论如何,感谢所有试图提供帮助的人。

关于ios - SWIFT tableView 行对选择没有反应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54593540/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com