gpt4 book ai didi

swift - 更改 TableView 数据源时按钮不起作用?

转载 作者:行者123 更新时间:2023-11-30 11:23:40 26 4
gpt4 key购买 nike

目前,我的 TableView 顶部有一个开关,它应该更改数据的来源。交换机调用该函数

   @objc func controlValueChanged(_sender: BetterSegmentedControl) {
if _sender.index == 0 {
//friend feed
tableView.dataSource = HomeViewController()
tableView.delegate = HomeViewController()
tableView.reloadData()
print("friends")

}
else if _sender.index == 1 {
//school feed
tableView.dataSource = schoolFeedViewController()
tableView.delegate = schoolFeedViewController()
tableView.reloadData()
print("school")
}

}

当我将状态从索引 0 更改为索引 1 时, TableView 似乎发生了切换,尽管由于数据源为空而没有 TableView 显示。但是,当我从索引 1 切换到索引 0 时,没有任何反应。控制台日志打印“ friend ”,但没有显示表格 View 。

以下是 schoolFeedViewController() 的代码:

    class schoolFeedViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
@IBOutlet weak var tableView: UITableView!
var postList = [Post]()
var currentSchool: String?
var currentGrade: String?
var schoolExists: Bool?

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

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

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "schoolFeedCell") as! schoolFeedTableViewCell
let schoolPost = postList[indexPath.row]

cell.post.text = schoolPost.post_words
return cell
}
}

我尝试更改委托(delegate)并从第二个数据源中删除 TableView ,但无济于事。

最佳答案

我有你的解决方案

  1. 将 _sender.index 值的状态保存在一个 Int 变量“selectedTab”中

  2. 当调用 @objc func controlValueChanged(_sender: BetterSegmentedControl) { 时仅在两个索引上重新加载 tableview

     if _sender.index == 0 {
    //friend feed
    tableView.reloadData()
    print("friends")

    }
    else if _sender.index == 1 {
    //school feed
    tableView.reloadData()

    }

  3. 对 DataSouce 方法使用 Switch case,例如

    func tableView(_ tableView: UITableView, numberOfRowsInSection 部分: Int) -> Int {

        switch selectedTab {
    case 0:
    return arrFrind.count
    case 1:
    return arrScool.count
    default:
    return 0
    }
    }

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

    switch selectedTab {

    case 0:

    let cell = tableView.dequeueReusableCell(withIdentifier: "cell0")!

    return cell

    case 1:

    let cell = tableView.dequeueReusableCell(withIdentifier: "cell1")!

    return cell


    default:
    return UITableViewCell()
    }

    }
  4. 在 switch selectedTab 中,值为 _sender.index

  5. 完成简单

关于swift - 更改 TableView 数据源时按钮不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50997030/

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