Pushing data between UITableView and UIViewController via segue issue(通过段问题在UITableView和UIView控制器之间推送数据)
本文介绍了通过段问题在UITableView和UIView控制器之间推送数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想将数据从UITableView推送到UIview控制器。我想将counter
设置为在UITableView中选择的行的值,然后将该值推入UIView控制器。我遇到的问题是,最初无论我在UITableView中按下哪一行,它都会设置counter
=0
然后,如果我关闭视图控制器,返回到UITableView并选择另一行,counter
的值将等于我选择的前一行。因此,这将是一场新闻发布会。我如何修复此问题?
UITableView控制器快速文件为:
import Foundation
import UIKit
class TableViewController : UITableViewController {
@IBOutlet var Tableview: UITableView!
var sectionName = ["Day 0","Day 1","Day 2","Day 3","Day 4","Day 5","Day 6"]
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:30)
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 simpleView1: UIView!
var simpleView2: UIView!
var theTitleArray = ["apple","orange","bananna","kiwi","grape","mango","avo"]
override func viewDidLoad() {
simpleView1 = SimpleVC1().view
simpleView2 = SimpleVC2().view
shiftView.addSubview(simpleView2)
shiftView.addSubview(simpleView1)
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(simpleView1)
break
case 1:
shiftView.bringSubviewToFront(simpleView2)
break
case 2:
shiftView.bringSubviewToFront(simpleView1)
break
default:
break
}
}
//back to tableview
@IBAction func backToSections(_ sender: Any) {
self.dismiss(animated: true, completion: nil)
}
}
推荐答案
您需要确保段源是view控制器本身而不是单元格,就好像执行段的单元格将在didSelectRowAt
之前被触发,因此计数器传递的值将具有误导性
这篇关于通过段问题在UITableView和UIView控制器之间推送数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:通过段问题在UITableView和UIView控制器之间推送数据
基础教程推荐
猜你喜欢
- Android:对话框关闭而不调用关闭 2022-01-01
- 当从同一个组件调用时,两个 IBAction 触发的顺序是什么? 2022-01-01
- 如何在 iPhone 上显示来自 API 的 HTML 文本? 2022-01-01
- 在 gmail 中为 ios 应用程序检索朋友的朋友 2022-01-01
- Kivy Buildozer 无法构建 apk,命令失败:./distribute.sh -m “kivy"d 2022-01-01
- 如何在没有IB的情况下将2个按钮添加到右侧的UINavigationbar? 2022-01-01
- android 应用程序已发布,但在 google play 中找不到 2022-01-01
- UIWebView 委托方法 shouldStartLoadWithRequest:在 WKWebView 中等效? 2022-01-01
- 如何让对象对 Cocos2D 中的触摸做出反应? 2022-01-01
- 如何在 UIImageView 中异步加载图像? 2022-01-01