TableViewCell导致一个具有不同SWIFT详细信息的单一视图控制器



这里一切正常,但我的问题是,我试图用我按下的不同单元格访问不同的信息。例如:

如果您按下包含以下内容的第一个表格视图单元格:

A-->第二视图,其中包含图像A名称的信息

如果您按下包含以下内容的第二个表格视图单元格:

B-->第二视图,包含B图像B名称的信息

如果您按下包含以下内容的第三个表格视图单元格:

C-->第二视图,包含C图像C名称的信息

如果你注意到在我的FirstViewController上;informationArray在类之外,因为我打算在SecondViewController上访问这些信息。然而,这并不重要,只是为了以防万一你好奇。


我尝试过的东西:

  • 我曾尝试在不同的视图控制器上手动写入每个信息,但我注意到这会增加应用程序的大小,因为我的信息超过100,这意味着要创建100多个视图控制器。还包括在这里使用segue

  • 尝试从第二个视图控制器调用数组,结果在按下的任何单元格中显示所有A,我已经找到了最好的方法。

  • 尝试谷歌搜索&youtubeing&斯塔克失败了,仍然找不到我需要的任何帮助,所以我决定把这个贴出来。

MyStruggle或我想要实现的目标:

如上所述,我想要一些你知道的帮助/技术,可以帮助我找到一种方法,使用我按下的不同tableviewcell,它分别显示存储在这些数组上的信息。

如果你注意到了,我尝试使用一个视图控制器而不是多个视图控制器。

FirstViewController.swift

struct information {
var name: [String]!
var image: [UIImage]!
init(named: [String], imaged: [UIImage]){
name = named
image = imaged
}
}
var informationArray = [information]()
class TableViewController: UITableViewController {
override func viewDidLoad(){
informationArray = [information(name: ["A","B","C"],
image: [UIImage(named: "A"),UIImage(named:"B"),UIImage(named: "C")]
}
}

SecondViewController.swift

class SecondViewController: UITableViewController {
@IBOutlet weak var Image: UIImageView!
@IBOutlet weak var Name: UITextField!

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

UITableView免费提供了几个内置方法,可以帮助您准确地完成所要做的事情

http://www.codingexplorer.com/segue-uitableviewcell-taps-swift/

这说明了如何将segue设置到第二个视图控制器,并传递要显示的数据。

要点简述:

您需要在第二个VC中创建一个属性来存储要显示的数据:

class SecondViewController: UITableViewController {
@IBOutlet weak var Image: UIImageView!
@IBOutlet weak var Name: UITextField!
var information: Information?
override func viewDidLoad() {
super.viewDidLoad()
}

}

您可以在故事板中设置从原型表单元格(在第一个viewController中)到第二个viewController的"显示"分段。设置分段标识符:"SecondViewController"。当您按下tableView中的一个单元格时,它将触发segue显示第二个viewController,并调用prepare(对于segue:_,:)函数:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "SecondViewController" {
if let indexPath = self.tableview.indexPathForSelectedRow {
let information = self.datasource[indexPath.row]
if let secondVC = (segue.destination as? SecondViewController) {
secondVC.information = info
}
}
}
}

通过上面的教程,你应该能够设置你要做的事情。你还将了解在哪里可以找到任何剩余问题的答案。

最新更新