xcode 如何在 Swift 中计算选定的 UITableView 行。在 indexPathForSelectedRow 中可选

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/27279504/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-15 06:18:07  来源:igfitidea点击:

How to count selected UITableView rows in Swift. Optional in indexPathForSelectedRow

iosiphonexcodeuitableviewswift

提问by migari

I'm trying to get number of selected rows in my tableView:

我正在尝试获取 tableView 中选定的行数:

self.tableView.setEditing(true, animated: true)

tableView.allowsMultipleSelection = true

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
   updateCount()
}

func tableView(tableView: UITableView, didDeselectRowAtIndexPath indexPath: NSIndexPath) {
    updateCount()
}

func updateCount(){

  let list = tableView.indexPathsForSelectedRows() as [NSIndexPath]

  println(list.count)

Everything works good until something is selected. But when there is no selected row, app crashes with "fatal error: unexpectedly found nil while unwrapping an Optional value". I think it is because selection is nil, but how to write this code with Optionals? I tried many ways but app still crashes when I uncheck all selection.

在选择某些内容之前,一切都很好。但是,当没有选定的行时,应用程序会因“致命错误:在解开可选值时意外发现 nil”而崩溃。我认为是因为 selection 为零,但是如何使用 Optionals 编写此代码?我尝试了很多方法,但当我取消选中所有选择时,应用程序仍然崩溃。

回答by Ron Fessler

Yes, you're on the right track. The error is happening because no rows are selected. Use conditional binding like so:

是的,你在正确的轨道上。发生错误是因为未选择任何行。像这样使用条件绑定:

func updateCount(){        
    if let list = tableView.indexPathsForSelectedRows() as? [NSIndexPath] {
        println(list.count)
    }
}

回答by Krishna Kishore

You can simply do

你可以简单地做

func updateCount(){
   if let list = tableView.indexPathsForSelectedRows {
        print(list.count)
   }
 }