gpt4 book ai didi

swift - accessoryButtonTappedForRowWithIndexPath 在 Swift 2 中返回不需要的索引路径

转载 作者:行者123 更新时间:2023-11-30 10:10:29 26 4
gpt4 key购买 nike

我有一个 UITableViewController,其中填充了来自 viewDidLoad 中调用的 NSFetchRequestNSManagedObjects

除了 accessoryButtonTappedForRowWithIndexPath 返回 indexPath 0 之外,myTableViewController 上的一切都按预期工作。

以下是我实现 accessoryButtonTappedForRowWithIndexPath 的方法:

override func tableView(tableView: UITableView, accessoryButtonTappedForRowWithIndexPath indexPath: NSIndexPath) {
performSegueWithIdentifier("reorderSequences", sender: UIButton())
}

这是我的performSegueWithIdentifier:

    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "reorderSequences" {
// Get a hold of the item to send to the destinationVC
let button = sender as! UIButton
let hitPoint = button.convertPoint(CGPointZero, fromCoordinateSpace: self.tableView)
if let indexPath: NSIndexPath = self.tableView.indexPathForRowAtPoint(hitPoint) {
// ** Regardless of which accessoryButton I press, the indexPath
// for index 0 is always the value **
print("\nhitPoint's x: \(hitPoint.x)\n hitPoint's y: \(hitPoint.y)")
let selectedThingSequence = self.thingSequences[indexPath.row]
print("prepareForSegue's indexPath is \(indexPath)")
// set up the segue
let destinationVC = segue.destinationViewController as! ReorderTableViewController
destinationVC.thingSequenceToReorder = selectedThingSequence
print(controller.description)
}
}
}

我的理解是使用UIButton作为发送者,让我弄清楚发送者位于performSegueWithIdentifier中的哪个indexPath。显然,事实并非如此。我错过了什么?

更新

对于每个简单的问题,都有一个简单的答案:

prepareForSegue 中,我将 indexPath 设置为 sender,如下所示:

override func tableView(tableView: UITableView, accessoryButtonTappedForRowWithIndexPath indexPath: NSIndexPath) {
performSegueWithIdentifier("reorderThings", sender: indexPath)
}

prepareForSegue中,我得到了像这样传递的indexPath:

let indexPath = sender as! NSIndexPath

如果您正在运行一堆 Segue,那么您需要小心。就我的目的而言,它有效。感谢汤姆·哈灵顿为我指明了正确的方向。

最佳答案

在这一行中:

performSegueWithIdentifier("reorderSequences", sender: UIButton())

您没有发送“该”UIButton。您正在创建一个全新的 UIButton 实例。这不是你点击的那个。它不在屏幕上或 View 层次结构中的任何位置。它对所有内容都有默认值。因此,当您开始执行转场时,传入的 UIButton 中没有任何有用的信息,并且每次都会得到相同的结果。

关于swift - accessoryButtonTappedForRowWithIndexPath 在 Swift 2 中返回不需要的索引路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33219664/

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