试图找出一种利用单一UITableview的不那么笨重的方法

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

我有一个UITableViewController,它是一个UIViewController。我制作了一个全局counter来跟踪UITableView中选择的行。因为根据选择的行,所呈现的UIViewController中的某些信息会发生变化。

我认为有可能整理它,以便dayx segue只需要调用一次,counter可以相应地改变,具体取决于选择哪一行?但我很难搞清楚。

这是我现在拥有的,它有效,但看起来很乱?

//what happens when row is selected
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    if indexPath.row == 0 {
        counter = 0
        self.performSegue(withIdentifier: "dayx", sender: self)
    } else if indexPath.row == 1 {
        counter = 1
        self.performSegue(withIdentifier: "dayx", sender: self)
    }
    else if indexPath.row == 2 {
        counter = 2
        self.performSegue(withIdentifier: "dayx", sender: self)
    }
    else if indexPath.row == 3 {
        counter = 3
        self.performSegue(withIdentifier: "dayx", sender: self)
    }
    else if indexPath.row == 4 {
        counter = 4
        self.performSegue(withIdentifier: "dayx", sender: self)
    }
    else if indexPath.row == 5 {
        counter = 5
        self.performSegue(withIdentifier: "dayx", sender: self)
    }
    else if indexPath.row == 6 {
        counter = 6
        self.performSegue(withIdentifier: "dayx", sender: self)
    }
}
swift uitableview swift4 didselectrowatindexpath
1个回答
1
投票

使用flatMap

Swift 4.0

indexPath.flatMap {
    print($0) 
    counter = $0
    self.performSegue(withIdentifier: "dayx", sender: self)
}

后来:

let _ = indexPath.compactMap {
     counter = $0
     self.performSegue(withIdentifier: "dayx", sender: self)
 }

要了解flatMap的基础知识。阅读这篇文章Replacing flatMap With compactMap

更新

如果你的所有行都打算做performSegue。简单:

//what happens when row is selected
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

   counter = indexPath.row
   self.performSegue(withIdentifier: "dayx", sender: self)
}
© www.soinside.com 2019 - 2024. All rights reserved.