将表视图(行select)的数据传递给视图控制器

mi的问题是这样的:我想select第一,第二…行和视图控制器必须根据所选行(标签,图像等)显示信息,我想了很多事情,但不工作。

我使用协议和这个:

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return 4 } func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = self.tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! CustomCellF cell.l2.text = hname[indexPath.row] cell.l1.text = prename[indexPath.row] cell.img1.image = imgs[indexPath.row] return cell } func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath){ let selectedH = self.nin2[(indexPath as NSIndexPath).row] self.delegate?.HabiSelected(selectedH) } 

谢谢

在这里输入图像说明

好吧,我将展示如何使用静态数组的string来做到这一点。 分析它使你的代码你需要(图像,文本)

第1步:创build新项目,并select视图控制器转到 – >embedded – >导航控制器 。 然后将UITableView添加到您的ViewController 。 然后添加一个原型单元格并将其命名(例如.cell)。

第2步:创build新的UITableViewCell (newcell)cocoa触摸类文件。

第3步:然后转到标识 – >自定义类 – >添加创buildUITableViewCell cocoa触摸类文件到您的原型单元格(单元格)。 然后将UILabel添加到您的prototye单元。

第4步:创build表视图委托视图控制器和创build标签到新单元的sockets,然后表视图来查看控制器。

第5步:将新的UIViewController添加到您的故事板为collectionView并按照类似的方法UITableView

第6步:创build从视图控制器segue push到collectionsviewcontroller并命名segue。

之后,将以下代码添加到具有表视图的视图控制器。

 import UIKit class ViewController: UIViewController,UITableViewDelegate,UITableViewDataSource{ @IBOutlet var tableView: UITableView! //Outlets of table View var titles = ["Michael Jackson","Taylor Swift","Katy Perry","Avril Lavigne"] //static Array override func viewDidLoad() { super.viewDidLoad() } func numberOfSectionsInTableView(tableView: UITableView) -> Int { return 1 } func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return titles.count } func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { let cell = self.tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! TableCell cell.TitlesLabel.text = titles[indexPath.row] return cell } func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { performSegueWithIdentifier("collectionSegue", sender: self) } override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { let index = self.tableView.indexPathForSelectedRow let indexNumber = index?.row //0,1,2,3 let vc = segue.destinationViewController as! collectionViewController vc.title = titles[indexNumber!] //NavigationItem.title on collectionViewController } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } } 

将以下代码添加到您的集合视图控制器。

 import UIKit class collectionViewController: UIViewController, UICollectionViewDataSource,UICollectionViewDelegate{ @IBOutlet var collectionView: UICollectionView! var collectionTitles = ["Hi","Hello","Hola","Ni hao"] var taylorSwift = ["Speak Now","Red","Love Story","Blank Space"] var thirdlabel = ["Jack","Sparrow","William","Mohan Singh"] var fourthlabel = ["Namasta","Vanakkam","Tamil","Hindi"] override func viewDidLoad() { super.viewDidLoad() } func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { return taylorSwift.count } func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell { let cell = self.collectionView.dequeueReusableCellWithReuseIdentifier("cell2", forIndexPath: indexPath) as! CollectionViewControllerCell let identity = navigationItem.title print(title) if identity == "Michael Jackson" { cell.collectionLabel.text = collectionTitles[indexPath.row] } else if identity == "Taylor Swift" { cell.collectionLabel.text = taylorSwift[indexPath.row] } else if identity == "Katy Perry" { cell.collectionLabel.text = thirdlabel[indexPath.row] } else { cell.collectionLabel.text = fourthlabel[indexPath.row] } return cell } } 

您应该以编程方式为您呈现的下一个视图控制器创build实例,并像这样将信息传递给该视图控制器

  func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { let cell = self.tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! CustomCellF let nextVC = self.storyboard?.instantiateViewControllerWithIdentifier("your identifier") as! YourCustomViewController nextVC.yourVariable = cell.theInfoYouWhatToPass self.presentViewController(nextVC, animated: true, completion: nil) } 

现在你的下一个VC实例将有你需要的信息存储在你的variables中