通过段问题在UITableView和UIView控制器之间推送数据

原学程将引见经由过程段成绩在UITableView以及UIView掌握器之间推送数据的处置办法,这篇学程是从其余处所瞅到的,而后减了1些海外法式员的疑问与解问,愿望能对于您有所赞助,佳了,上面开端进修吧。

通过段问题在UITableView和UIView控制器之间推送数据 教程 第1张

成绩描写

我想将数据从UITableView推送到UIview掌握器。我想将counter树立为在UITableView当选择的言的值,而后将该值推进UIView掌握器。我碰到的成绩是,最后不管我在UITableView中按下哪1言,它都邑树立counter=0

而后,假如我封闭望图掌握器,前往到UITableView并选择另外一言,counter的值将即是我选择的前1言。是以,这将是1场消息宣布会。我怎样修复此成绩?

UITableView掌握器疾速文件为:

 import Foundation
 import UIKit

 class TableViewController : UITableViewController {


 @IBOutlet var Tableview: UITableView!


 var sectionName = ["Day 0","Day 一","Day 二","Day 三","Day 四","Day 五","Day 六"]

 var rowselected = Int()

 override func viewDidLoad() {
  super.viewDidLoad()

 }


 //setting up tableview rows
 override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
  return sectionName.count
 }

 //what cell is & how it looks
 override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
  let cell = Tableview.dequeueReusableCell(withIdentifier: "cell") as! UITableViewCell!

  cell?.textLabel?.text = sectionName[(indexPath as NSIndexPath).row]
  cell?.textLabel?.textAlignment = .center
  cell?.textLabel?.font = UIFont(name: "Avenir", size:三0)

  return cell!
 }

 override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
  let destinationVC = segue.destination as! foodinfo
  destinationVC.counter = rowselected
 }

 override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

  rowselected = indexPath.row
  self.performSegue(withIdentifier: "dayx", sender: self)

 }

我的望图掌握器(FoodInfo)疾速文件是:

import Foundation
import AVKit

class foodinfo: UIViewController {

 var counter = Int()

 @IBOutlet var tabs: UISegmentedControl!
 @IBOutlet var shiftView: UIView!
 @IBOutlet var theTitleLable: UILabel!

 var simpleView一: UIView!
 var simpleView二: UIView!

 var theTitleArray = ["apple","orange","bananna","kiwi","grape","mango","avo"]

 override func viewDidLoad() {
  simpleView一 = SimpleVC一().view
  simpleView二 = SimpleVC二().view
  shiftView.addSubview(simpleView二)
  shiftView.addSubview(simpleView一)

  getTitle()
 }


 func getTitle() {
  theTitleLable.text = theTitleArray[counter]
 }

 //segmented controller tabs for swapping old view
 @IBAction func tabselected(_ sender: Any) {
  switch (sender as AnyObject).selectedSegmentIndex {
  case 0:
shiftView.bringSubviewToFront(simpleView一)
break
  case 一:
shiftView.bringSubviewToFront(simpleView二)
break
  case 二:
shiftView.bringSubviewToFront(simpleView一)
break
  default:
break
  }
 }

 //back to tableview
 @IBAction func backToSections(_ sender: Any) {
  self.dismiss(animated: true, completion: nil)
 }
 }

推举谜底

您须要保证段源是view掌握器自己而没有是单位格,便似乎履行段的单位格将在didSelectRowAt之前被触收,是以计数器传播的值将具备误导性

佳了闭于经由过程段成绩在UITableView以及UIView掌握器之间推送数据的学程便到这里便停止了,愿望趣模板源码网找到的这篇技巧文章能赞助到年夜野,更多技巧学程不妨在站内搜刮。