当选择第二个单元格时,Swift UITableViewController didSelectRow首先调用

时间:2015-08-14 05:47:29

标签: ios swift uitableview

所以这是我的奇怪问题 我有一个使用故事板的小应用程序 我有1个UITabBarController,有2个标签:
- 1 UITableViewController(子类)
- 1 UIViewController(只有一个UILabel,到现在为止没有任何作用)

UITableViewController是子类,我提供:
- numberOfSectionsInTableView(tableView: UITableView) -> Int
- tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
- tableView(tableView: UITableView, didDeselectRowAtIndexPath indexPath: NSIndexPath)
- tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell

tableview有2个部分(7和1行) 第1部分中的行是自定义单元格,选中时不应执行任何操作 第2部分中的行是标准UITableViewCell,应该开始下载 但是,当我选择任何单元格tableView(tableView: UITableView, didDeselectRowAtIndexPath indexPath: NSIndexPath)时,甚至只有在选择了另一个单元格(不再相同)之后,才会调用didSelect,并选择我选择的第一个单元格。 另一个例子; (x,x)表示所选的indexPath
(1,0),什么都不做 - >选择(0,6),(1,0) - >选择(0,2),(0,6) - >选择(1,0),(0,2)

加法:
- 突出显示正在按预期工作。只是tableView(tableView: UITableView, didDeselectRowAtIndexPath indexPath: NSIndexPath)的电话不是 - tableView(tableView: UITableView, willSelectRowAtIndexPath indexPath: NSIndexPath) -> NSIndexPath?被称为合适。

解决方案:
委托方法中有点错字。我实施了didDeselectRowAtIndexPath而不是didSelectRowAtIndexPath

2 个答案:

答案 0 :(得分:6)

您正在呼叫didDeselectRowAtIndexPath而不是didSelectRowAtIndexPath。 你应该使用这个方法:

tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)

答案 1 :(得分:1)

请检查您的委托方法,它应该是;

tableView(tableView: UITableView, selectRowAtIndexPath indexPath: NSIndexPath)