Попытка выяснить менее неуклюжий способ использования одного UITableview - PullRequest
0 голосов
/ 01 марта 2019

У меня есть UITableViewController, передающий UIViewController.Я сделал глобальный counter, чтобы отслеживать, какая строка в UITableView была выбрана.Потому что в зависимости от того, какая строка выбрана, некоторая информация в представленном UIViewController будет меняться.

Я думаю, что можно привести в порядок, так что dayx вызов вызывается только один раз, а 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)
    }
}

1 Ответ

0 голосов
/ 01 марта 2019

Использование 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.Прочитайте эту статью Замена flatMap на 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)
}
...