gpt4 book ai didi

ios - 来自可重复使用的表格单元格的不同 segues

转载 作者:可可西里 更新时间:2023-11-01 02:23:10 27 4
gpt4 key购买 nike

我是编程新手,在 xcode/swift 上遇到了我的第一个令人头疼的问题。

我制作了一个带有可重用单元格的表格 View 。我将有 4 个不同的单元格,我希望每个单元格对另一个 View Controller 执行不同的转场。

但是,目前我似乎只能为返回的所有单元格选择一个 segue。

我尝试在“numbersTableViewCellDidTouch”函数中根据 indexPath.row 编号实现 if 语句,但不断收到一条错误消息,提示“使用未解析的标识符 IndexPath”。我猜是因为它是一个委托(delegate)函数,所以我不能在此函数中使用 indexPath,因为 indexPath 属于导航 View Controller 而不是单元格。

关于如何根据返回的单元格的位置执行不同的 segues,我摸不着头脑......有人能帮忙吗?

仅供引用,我已经为我的 TableView Controller 复制了下面的代码。

import UIKit

class NumbersTableViewController: UITableViewController, NumbersTableViewCellDelegate {

override func viewDidLoad() {
super.viewDidLoad()
UIApplication.sharedApplication().setStatusBarStyle(UIStatusBarStyle.LightContent, animated: true)
tableView.estimatedRowHeight = 85
tableView.rowHeight = UITableViewAutomaticDimension
}

@IBAction func menuButtonDidTouch(sender: AnyObject) {
performSegueWithIdentifier("MenuSegue", sender: self)
}

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 4
}

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

let cell = tableView.dequeueReusableCellWithIdentifier("StoryCell") as NumbersTableViewCell

cell.titleLabel.text = numbersData[indexPath.row]["title"] as? String
cell.summaryLabel.text = numbersData[indexPath.row]["subtitle"] as? String
cell.articleImageView.image = UIImage(named: "cat-pic2")
cell.delegate = self

return cell
}

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
tableView.deselectRowAtIndexPath(indexPath, animated: true)
performSegueWithIdentifier("NumbersArticleSegue", sender: self)
}

//Mark: NumbersTableViewCellDelegate

func numbersTableViewCellDidTouch(cell: NumbersTableViewCell, sender: AnyObject) {
performSegueWithIdentifier("NumbersArticleSegue", sender: self)
}

最佳答案

在您的“numbersTableViewCellDidTouch”函数中,参数是单元格及其发送者。没有对 indexPath 的引用,这就是您收到该错误的原因。

但是有办法解决这个问题。使用UITableView's indexPathForCell:函数将为您提供您正在寻找的 NSIndexPath。

因此您可以将函数更改为:

func numbersTableViewCellDidTouch(cell: NumbersTableViewCell, sender: AnyObject) {

//indexPathForCell(_:UITableViewCell) returns a NSIndexPath?
//if let will safely unwrap for us.
if let indexPath = tableView.indexPathForCell(cell)
{
//Run if statements to check indexPath.row
performSegueWithIdentifier("NumbersArticleSegue", sender: self)
}

//Should still have a default action if indexPathForCell(_:UITableViewCell) returns a nil value
}

关于ios - 来自可重复使用的表格单元格的不同 segues,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29669733/

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