在使用自定义索引路径的 didSelectRowAtIndexPath 期间崩溃
Crash during didSelectRowAtIndexPath with custom index path
我的项目遇到了一个问题。
我有一个包含国家列表的表格视图。当你 select 一个国家时,它应该为新 selected 国家添加一个复选标记配件。这一切都很好。
但是,我希望将旧国家/地区的配件设置为 none,但是我在排序时遇到了问题。
我的代码是:
let oldCountry = countryList.countries.filter({c in c.countryName == profileCountryID })
let countryKey = oldCountry[0].countryID
let oldselectedCell:UITableViewCell = tableView.cellForRowAtIndexPath(NSIndexPath(index: countryKey))!
oldselectedCell.accessoryType = UITableViewCellAccessoryType.None
应用程序在此行崩溃:
let oldselectedCell:UITableViewCell = tableView.cellForRowAtIndexPath(NSIndexPath(index: countryKey))!
countryID 在一个结构中,允许我找到数组编号
struct Country {
var countryName : String
var countryID : Int
}
public struct CountryLibrary {
var countries: [Country]
}
let countryList =
CountryLibrary(
countries: [
Country(countryName: "Afghanistan", countryID: 0),
Country(countryName: "Albania", countryID: 1)
])
你能帮我把上一行的配件拆下来吗?
谢谢
我发现您的 NSIndexPath
声明是针对 "one-node" indexPath 的声明。您需要的是声明为:
的 TableView indexPath
NSIndexPath(forRow: <#Int#>, inSection: <#Int#>)
所以您可能想尝试以下方法:
let oldselectedCell:UITableViewCell = tableView.cellForRowAtIndexPath(NSIndexPath(forRow: countryKey, inSection: 0))!
我的项目遇到了一个问题。
我有一个包含国家列表的表格视图。当你 select 一个国家时,它应该为新 selected 国家添加一个复选标记配件。这一切都很好。
但是,我希望将旧国家/地区的配件设置为 none,但是我在排序时遇到了问题。
我的代码是:
let oldCountry = countryList.countries.filter({c in c.countryName == profileCountryID })
let countryKey = oldCountry[0].countryID
let oldselectedCell:UITableViewCell = tableView.cellForRowAtIndexPath(NSIndexPath(index: countryKey))!
oldselectedCell.accessoryType = UITableViewCellAccessoryType.None
应用程序在此行崩溃:
let oldselectedCell:UITableViewCell = tableView.cellForRowAtIndexPath(NSIndexPath(index: countryKey))!
countryID 在一个结构中,允许我找到数组编号
struct Country {
var countryName : String
var countryID : Int
}
public struct CountryLibrary {
var countries: [Country]
}
let countryList =
CountryLibrary(
countries: [
Country(countryName: "Afghanistan", countryID: 0),
Country(countryName: "Albania", countryID: 1)
])
你能帮我把上一行的配件拆下来吗?
谢谢
我发现您的 NSIndexPath
声明是针对 "one-node" indexPath 的声明。您需要的是声明为:
NSIndexPath(forRow: <#Int#>, inSection: <#Int#>)
所以您可能想尝试以下方法:
let oldselectedCell:UITableViewCell = tableView.cellForRowAtIndexPath(NSIndexPath(forRow: countryKey, inSection: 0))!