Select UITableView 中 viewdidload 上的单元格,基于字符串数组 (Swift)
Select Cells on viewdidload in UITableView, based on String Array (Swift)
如何根据核心数据数组中的匹配字符串值 select UITableview 中的多个单元格?
我已经保存了之前的 selected 行(作为字符串),但是现在当我再次加载 table 时,我希望所有内容都再次被 selected。我找不到或想不出任何解决方案。
数组:
var category:[String] = ["News", "Sport", "Weather", "Earth", "Future", "Shop", "TV", "Radio", "Food", "Music", "Travel", "Local", "Nature", "Venue", "Money"]
我试图找出 selectRowAtIndexPath
但我没有在 Swift 中看到它。
以下是我如何从核心数据中获取数据
func fetchData(){
let entityDescription = NSEntityDescription.entityForName("UserSettings", inManagedObjectContext: Context!)
let request = NSFetchRequest()
request.entity = entityDescription
var dataObjects: [AnyObject]?
do {
dataObjects = try Context?.executeFetchRequest(request)
} catch let error as NSError {
print(error)
dataObjects = nil
}
//CAN I UPDATE THE TABLE SELECTION FROM THE FETCH?
for result in dataObjects as! [NSManagedObject] {
print(result.valueForKey("favCategory")!)
}
}
更新
我怎样才能根据存储在核心数据中的字符串(Viewdidload 上的多项选择)select
let rowToSelect:NSIndexPath = NSIndexPath(forRow: 0, inSection: 0); //slecting 0th row with 0th section
self.tableView.selectRowAtIndexPath(rowToSelect, animated: true, scrollPosition: UITableViewScrollPosition.None);
您不能 select viewDidLoad
上的单元格,因为 tableView 尚未在 viewDidLoad
中加载。您应该将 bool 变量作为标志存储在数据源中,然后将 cellForRowAtIndexPath:
方法更新为:
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! YourCustomCell
let object = self.dataObjects[indexPath.row] as! YourObject
cell.selected = object.isSelected
return cell
}
如何根据核心数据数组中的匹配字符串值 select UITableview 中的多个单元格?
我已经保存了之前的 selected 行(作为字符串),但是现在当我再次加载 table 时,我希望所有内容都再次被 selected。我找不到或想不出任何解决方案。
数组:
var category:[String] = ["News", "Sport", "Weather", "Earth", "Future", "Shop", "TV", "Radio", "Food", "Music", "Travel", "Local", "Nature", "Venue", "Money"]
我试图找出 selectRowAtIndexPath
但我没有在 Swift 中看到它。
以下是我如何从核心数据中获取数据
func fetchData(){
let entityDescription = NSEntityDescription.entityForName("UserSettings", inManagedObjectContext: Context!)
let request = NSFetchRequest()
request.entity = entityDescription
var dataObjects: [AnyObject]?
do {
dataObjects = try Context?.executeFetchRequest(request)
} catch let error as NSError {
print(error)
dataObjects = nil
}
//CAN I UPDATE THE TABLE SELECTION FROM THE FETCH?
for result in dataObjects as! [NSManagedObject] {
print(result.valueForKey("favCategory")!)
}
}
更新 我怎样才能根据存储在核心数据中的字符串(Viewdidload 上的多项选择)select
let rowToSelect:NSIndexPath = NSIndexPath(forRow: 0, inSection: 0); //slecting 0th row with 0th section
self.tableView.selectRowAtIndexPath(rowToSelect, animated: true, scrollPosition: UITableViewScrollPosition.None);
您不能 select viewDidLoad
上的单元格,因为 tableView 尚未在 viewDidLoad
中加载。您应该将 bool 变量作为标志存储在数据源中,然后将 cellForRowAtIndexPath:
方法更新为:
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! YourCustomCell
let object = self.dataObjects[indexPath.row] as! YourObject
cell.selected = object.isSelected
return cell
}