通过Xcode(三段)中的多个段中的UITableViews传递数据

时间:2017-04-27 03:38:54

标签: ios xcode uitableview segue identifier

我的设置是三个视图控制器,前两个带有UITableView,第三个带有图像。

Layout

我想将数据从firstViewController传递到secondViewController,然后使用UITableViews通过segues将这两组数据传递给thirdViewController。

我用来从firstViewController传递到secondViewController的代码如下:

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    performSegue(withIdentifier: "identifier1", sender: candy[indexPath.row])
}

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    let selectedCandy = segue.destination as? SecondViewController
    selectedCandy?.showCandy = sender as? String
}

对于secondViewController中的代码非常相似:

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    performSegue(withIdentifier: "identifier2", sender: flavors[indexPath.row])
}

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    let selectedFlavor = segue.destination as? ThirdViewController
    selectedFlavor?.showFlavor = sender as? String
}

我正在做的主要是在firstViewController UITableView中选择一个Candy,在secondViewController UITableView中选择一个Flavor,然后在thirdViewController中有一个标签FLAVOR CANDY和一个选择图像。

Flavor的标签确实显示出来。 Candy的标签没有。如何将选择从Candy的segue传递给thirdViewController?

非常感谢提前。

1 个答案:

答案 0 :(得分:0)

FirstViewController

    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        performSegue(withIdentifier: "identifier1", sender: self.candy[indexPath.section])
    }

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if segue.identifier == "identifier1" {
            let goNext = segue.destination as! SecondViewController
            goNext.showCandy = sender as! String
        }
    }

SecondViewController

var showCandy = ""

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        performSegue(withIdentifier: "identifier2", sender: self.flavors[indexPath.section])
    }

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if segue.identifier == "identifier2" {
            let goNext = segue.destination as! ThirdViewController
            goNext.showCandy = showCandy
            goNext.showFlavor = sender as! String
        }
    }

ThirdViewController

var showCandy = ""
var showFlavor = ""

override func viewDidLoad() {
        super.viewDidLoad()
        print(showCandy)
        print(showFlavor)
 }