• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - TableView 数组 segue 不会传递数据

[复制链接]
菜鸟教程小白 发表于 2022-12-11 18:20:23 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我在将数据从 TableView 中的选定行传递到另一个 ViewController 时遇到问题。

class SectionsTableViewController: UITableViewController {


var sections: [Sections] = SectionsData().getSectionsFromData()

override func viewDidLoad() {
    super.viewDidLoad()

}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

// MARK: - Table view data source

override func numberOfSections(in tableView: UITableView) -> Int {
    // #warning Incomplete implementation, return the number of sections
    return sections.count
}

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    // #warning Incomplete implementation, return the number of rows
    return sections[section].items.count
}


override func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
    return sections[section].headings
}

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "sectionCell", for: indexPath)

    // Configure the cell...
    cell.textLabel?.text = sections[indexPath.section].items[indexPath.row]

    return cell
}



override func prepare(for segue: UIStoryboardSegue, sender: Any?)
{
    if (segue.identifier == "sectionCell")
    {
        let upcoming: Sjekkliste = segue.destination as! Sjekkliste

        let indexPath = self.tableView.indexPathForSelectedRow!

        let titleString = Sections(title: "", objects: [""]) as? String

        upcoming.titleString = titleString

        self.tableView.deselectRow(at: indexPath, animated: true)
        }

这是我的问题所在:let titleString = Sections(title: "", objects: [""]) as?字符串

如果标题和对象分开传递会更好。

这是我的数据设置:

class SectionsData {
var myArray: [AnyObject] = []

func getSectionsFromData() -> [Sections] {

    var sectionsArray = [Sections]()

    let Generell = Sections(title: "Animals", objects:
        ["Cat", "Dog", "Lion", "Tiger"]) 
    sectionsArray.append(Generell)
    return sectionsArray



Best Answer-推荐答案


这一行建议您将 String 子类化为 Sections。你为什么要继承字符串?如果 Sections 不是字符串的子类,则此行将失败。

let titleString = Sections(title: "", objects: [""]) as? String

我假设你想要类似的东西:

let selectedSection:Sections = Sections(title: "", objects: [""])
upcoming.titleString = selectedSection.title

上面建议 Sections 对象上的“title”属性是您希望设置为下一个 View Controller 的“titleString”属性的内容。

与原始问题无关,您应该将“Generell”小写。最佳实践建议只有类名应该以大写字母开头。我还建议实现 didSelectRow 方法来选择您的数据。结果应该类似于:

var selectedSection:Sections? //goes at top

public func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    tableView.deselectRow(at: indexPath, animated: true)
    self.selectedSection = self.sections[indexPath.section]
}

override func prepare(for segue: UIStoryboardSegue, sender: Any?){
 if (segue.identifier == "sectionCell"){
    let upcoming: Sjekkliste = segue.destination as! Sjekkliste
    if let section = self.selectedSection{
        upcoming.titleString = section.title
    }
 }
}

关于ios - TableView 数组 segue 不会传递数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41190455/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap