iphone - didSelectRowAtIndexPath 返回错误的 IndexPath

标签 iphone objective-c uitableview didselectrowatindexpath nsindexpath

我遇到了一个非常令人费解的错误。我的 UITableView 的 first 行返回 1second 一个返回 indexPath 中的 0 !这怎么可能?

在我的 `-(void)viewDidLoad` 中一切都还好。我正在使用

成功突出显示第一行
currentRow = 0;
[tableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:currentRow inSection:0] 
  animated:NO scrollPosition:UITableViewScrollPositionNone];

我有变量 currentRow用于跟踪选择了哪一行(另一个控件会根据当前选择的行进行更改)。

现在在我的 `didDeselectRowAtIndexPath` 委托(delegate)函数中,我有:

-(void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath {
...
NSLog(@"IndexPath: %@", [indexPath description]);
}

日志显示如下:

IndexPath: <NSIndexPath 0x79509d0> 2 indexes [0, 0]当我触摸 second 行时, IndexPath: <NSIndexPath 0x79509d0> 2 indexes [0, 1]当我触摸 first 行时。

没有行插入或删除或排序等,甚至没有滚动。它是一个简单的 UITableView,分组样式,有 1 节和 3 行。这可能是什么原因造成的?

感谢您的帮助,
S

最佳答案

你已经实现了didDeselectRowAtIndexPath .当行不再被选中时,它将被触发。

当您触摸第二行时,第一行不再被选中,因此将显示 [0, 1]。
当您再次触摸第一行时,第二行现在不再被选中,因此将显示 [0, 0]。

这些都是意料之中的。

实现 didSelectRowAtIndexPath如果您需要它在该行被选中时做出响应。

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    //                                       ^
    ...

    NSLog(@"IndexPath: %@", [indexPath description]);
}

关于iphone - didSelectRowAtIndexPath 返回错误的 IndexPath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4118993/

相关文章:

ios - iPhone 6 Flexbox 包装问题

ios - Xamarin UITableView 动画从错误的位置开始

iphone - 防止 iPad 中的自动屏幕锁定

iphone - 如何在 iPhone 中生成二维码?

ios - Swift:静态 UITableViewCell 中的 TableView

swift - TableViewCell 导致具有不同细节的单一 View Controller SWIFT

iphone - 如何使用 google direction apis 或 iPhone 应用程序的其他一些 apis 比较两条路线

iphone - 从当前日期算起接下来的两周

iphone - iPhone App移植到Android的需求?

objective-c - NSHTTPCookie 拒绝删除