Ios tableView:DidDeceloseRowAtIndexPath:在第一个用户启动选择和取消选择之前不会调用
我有一个带有四个单元格的Ios tableView:DidDeceloseRowAtIndexPath:在第一个用户启动选择和取消选择之前不会调用,ios,cocoa-touch,uitableview,Ios,Cocoa Touch,Uitableview,我有一个带有四个单元格的UITableView,处于单一选择模式。首次加载视图时,我根据存储的首选项,使用-selectRowAtIndexPath:animated:scrollPosition:以编程方式选择一个单元格。之后,用户可以与表进行交互 每次用户点击任何单元格时,都会在我的表视图委托上调用方法-tableView:willselectRowatineXpath:和-tableView:didselectRowatineXpath:。但是,-tableView:willDeselec
UITableView
,处于单一选择模式。首次加载视图时,我根据存储的首选项,使用-selectRowAtIndexPath:animated:scrollPosition:
以编程方式选择一个单元格。之后,用户可以与表进行交互
每次用户点击任何单元格时,都会在我的表视图委托上调用方法-tableView:willselectRowatineXpath:
和-tableView:didselectRowatineXpath:
。但是,-tableView:willDeselectRowAtIndexPath:
和-tableView:diddelectrowatindexpath:
(即DEselect)在用户手动点击第一个编程选择的单元格之前,不会开始调用
知道为什么会这样吗?除了为每个单元格手动调用
-[UITableView selectRowAtIndexPath:animated://code>之外,还有其他解决方法吗?这太长了,无法发表评论,因此我将此作为答案发布
刚刚用tableView创建了测试项目。我在viewdiload
上调用[UITableView selectRowAtIndexPath:animated:
,我选择了一个单元格。然后我选择另一个单元格(不取消选择第一个单元格)
我有以下输出:
[SDTVTViewController tableView:willSelectRowAtIndexPath:]
[SDTVTViewController tableView:willDeselectRowAtIndexPath:]
[SDTVTViewController tableView:didDeselectRowAtIndexPath:]
[SDTVTViewController tableView:didSelectRowAtIndexPath:]
我取消选择了第一个单元格,选择了第二个单元格
我不知道,为什么它在你的代码中不起作用。当您调用[UITableView SelectRowatineXpath:animated:
时,您可以发布已实现的UITableViewDelegate
方法的代码吗?我正在包装初始数据源更新,并-SelectRowatineXpath:…
调用
[_tableView beginUpdates];
// ...
[_tableView endUpdates];
显然,就像-reloadData
,这会清除当前选择(不确定这是否是出于设计)。我将调用移动到-selectRowatineXpath:…
之后的-endUpdates
,现在一切都正常了。如果调用[UITableView selectRowatineXpath:animated:]太快,并且使用的是UITableViewController,则可能与UIViewController ClearSelectionNoviewMillappear冲突(默认为是)。请尝试设置self.clearselectiononviewwillappear=NO;在您的viewDidLoad中,您试图在选择后立即取消对UITableViewCell
的选择?不完全是。一个单元格(称为cellA)是以编程方式选择的。我希望用户能够通过点击另一个单元格来取消选择cellA,但实际上,在用户亲自点击cellA之前,这不起作用。是的,我也有同样的问题。您需要调用SelectRowatinePath:animated:scrollPosition:
方法将状态设置为选中。检查我的答案