【问题标题】:Calling a string through a function using an array and UITableView as indicator通过使用数组和 UITableView 作为指示器的函数调用字符串
【发布时间】:2014-12-30 22:15:50
【问题描述】:

我的第一个问题帖子。我想从函数返回一个字符串。该函数应访问数组 (arrayOfTasks) 的字符串 (task.name)。该数组根据表的索引来确定 task.name 的值。

这是我在实现函数 callString 时遇到的错误:“由于未捕获的异常 'NSInternalInconsistencyException' 而终止应用程序,原因:'与 UITableView 一起使用的索引路径无效。传递给表视图的索引路径必须恰好包含两个索引指定部分和行。如果可能,请使用 UITableView.h 中 NSIndexPath 上的类别。 "

如您所见,我试图在函数中指定一个部分(forSection...),但我继续收到错误。

func callString(var yzx: String, tableView: UITableView!, forRowAtIndexPath indexPath: NSIndexPath!, forSectionAtIndexPath: NSIndexPath!) -> String {
  var task = arrayOfTasks[indexPath.row]
  var yzx = task.name
  return yzx
}

label.text = callString(String(), tableView: UITableView(), forRowAtIndexPath: NSIndexPath(), forSectionAtIndexPath: NSIndexPath())

【问题讨论】:

    标签: xcode swift


    【解决方案1】:

    你需要创建一个有效的 NSIndexPath。

    例如:NSIndexPath(forRow: 0, inSection: 0)

    所以你可以把你的函数改成这样:

    func callString(var yzx: String, tableView: UITableView!, forIndexPath indexPath: NSIndexPath!) -> String {
        var task = arrayOfTasks[indexPath.row]
        var yzx = task.name
        return yzx
    }
    
    let label = UILabel()
    label.text = callString(String(), UITableView(), forIndexPath: NSIndexPath(forRow: 0, inSection: 0))
    

    【讨论】:

    • 知道如何使“forRow: 0”中的“0”成为所选表格视图行的变量吗?我的“label.text”行在一个单独的函数中。
    • 如果您在函数didSelectRow... 中,您应该已经可以访问 indexPath。如果您只能访问单元格,则可以执行以下操作:let indexPath = tableview.indexPathForCell(yourCell)! label.text = callString(String(), UITableView(), forIndexPath: indexPath)
    • 我不在函数“didSelectRow...”中。我需要在函数“override func prepareForSegue ...”中获取这个变量。那可能吗?非常感谢您的帮助!
    • 您可以使用tableview.indexPathForSelectedRow()。它会给你返回 selectedRow 的 indexPath。
    • 谢谢,这很有用,但我现在需要将 NSIndexPath 转换为 Integer。想法?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多