如何以编程方式取消选择静态单元iOS

时间:2014-10-26 05:52:55

标签: ios uitableview swift

我有一个静态单元格,单击时会启动模态视图。除非我从模态视图返回时仍然选择了单元格?为什么这样做,我怎样才能使它只选择单元格,直到模态完全覆盖视图。

提前致谢

5 个答案:

答案 0 :(得分:7)

对于Swift 2:

myAudio.addEventListener('SOME EVENT', function(ARRAY) {
    displayVisualizer(ARRAY);
});

对于Swift 3和4:

override func viewWillAppear(animated: Bool) {
    if let indexPath = self.tableView.indexPathForSelectedRow {
        tableView.deselectRowAtIndexPath(indexPath, animated: true)
    }
}

答案 1 :(得分:3)

如果您使用UITableViewController代替UIViewController,则会自动完成此操作。否则,您需要使用UITableView上的 deselectRowAtIndexPath:animated:取消选择。执行此操作的最佳位置可能是在呈现视图控制器的viewDidAppear:上。这样,用户仍然可以看到取消选择动画,允许他们重新定位自己。

如果您不需要为其他目的跟踪所选行,则可以使用 indexPathForSelectedRow确定需要取消选择哪个索引路径(如果有)。

答案 2 :(得分:2)

我知道这太晚了但可能会帮助那些使用Swift的人 -

从detailViewController返回masterViewController时,这将产生很好的效果

override func viewWillAppear(animated: Bool) 
{
  if let indexPath = self.tableView.indexPathForSelectedRow
  {
    self.tableView.deselectRowAtIndexPath(indexPath, animated: true)
  }
}

否则添加TableView的委托方法并从didSelectRowAtIndexPath中调用

func tableView(tableView: UITableView, didDeselectRowAtIndexPath indexPath: NSIndexPath)
    {
        if let indexPath = tableView.indexPathForSelectedRow
        {
            tableView.deselectRowAtIndexPath(indexPath, animated: true)
        }
    }

答案 3 :(得分:0)

您可以在 UITableViewController ;

中使用它
- (void)viewWillAppear:(BOOL)animated
{
    [yourTableView deselectRowAtIndexPath:[yourTableView indexPathForSelectedRow] animated:YES];
}

在您的情况下, yourTableView 属性应为 self.tableView

答案 4 :(得分:0)

swift 3

override func viewWillAppear(animated: Bool) {
 tableView.deselectRow(at: tableView.indexPathForSelectedRow!, animated: true)
}