gpt4 book ai didi

ios - 通过单元格中的按钮通过 segue 传递数据……不工作……

转载 作者:行者123 更新时间:2023-12-01 20:17:32 27 4
gpt4 key购买 nike

我在自定义 UITableView 中有一个相当复杂的单元格。该单元格中有多个元素,我希望能够在用户单击特定图像时显示 map Controller 。

我首先尝试使用一个简单的按钮和这些功能来做到这一点:

import UIKit


class SousCategorieViewController: UITableViewController {

var rubSegue = NSDictionary()

@IBOutlet weak var bigLogoOutlet: UIImageView!
@IBOutlet weak var titreOutlet: UILabel!
@IBOutlet weak var introOutlet: UILabel!


override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.

let bigLogo = rubSegue["gfx"]!["bigLogo"]!
bigLogoOutlet.image = UIImage(named: "\(bigLogo!)")

let titre = rubSegue["gfx"]!["titre"]!
titreOutlet.text? = "\(titre!)".uppercaseString
self.title = titre as? String
tableView.estimatedRowHeight = 3000
self.tableView.rowHeight = UITableViewAutomaticDimension

}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}


// MARK: - Table View

override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}


override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return rubSegue["corpus"]!.count

}

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {


let corpusArray = rubSegue.objectForKey("corpus") as! NSArray

let cell = tableView.dequeueReusableCellWithIdentifier("cellChapter", forIndexPath: indexPath) as! UniversalXIB

cell.sousTitreOutlet.text = corpusArray[indexPath.row]["soustitre"] as? String
cell.introOutlet.text = corpusArray[indexPath.row]["intro"] as? String
cell.titreOutlet.text = corpusArray[indexPath.row]["titre"] as? String
cell.imageOutlet.image = UIImage(named: (corpusArray[indexPath.row]["imageNP"] as! String))
let texteArray = corpusArray[indexPath.row].objectForKey("texteArray") as? NSDictionary
let iconesArray = corpusArray[indexPath.row].objectForKey("iconesArray") as? NSDictionary
deleteStackOrNot((corpusArray[indexPath.row]["iconesNPBool"] as! Bool), stack: cell.iconesStackOutlet)
deleteImagesOrNot((corpusArray[indexPath.row]["mapBool"] as! Bool), nameImage: (corpusArray[indexPath.row]["map"] as! String), stackRoot: cell.titreOutletStack, outlet: cell.mapOutlet)


return cell
}

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {


if segue.identifier == "mapSegue" {
if let destination = segue.destinationViewController as? Map {
if let rubIndex = tableView.indexPathForSelectedRow?.row {
print(rubIndex)
destination.nomVariable = rubIndex

}
}
}
}

}

有 3 个单元格,唯一打印的是:
0
0

无论选择什么单元格。我究竟做错了什么 ?

最佳答案

好的,在这种情况下,您可以在当前索引的 cellForRowAtIndexPath 中创建按钮时为其添加标签:

button.tag = indexPath.row

然后在 prepareForSegue 中从发件人(按钮)中获取标签,这将是您选择的单元格索引 - rubIndex:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if let button = sender as? UIButton {
let rubIndex = button.tag
print(rubIndex)
}
}

关于ios - 通过单元格中的按钮通过 segue 传递数据……不工作……,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36387699/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com